Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Apache KafkaSpring Boot

Spring Boot ile Apache Kafka Uygulaması

Paylaş

Spring Boot Dersleri’ne devam ediyorum. Bu yazıda ise Spring Boot kullanarak Apache Kafka örnek bir uygulama yapacağım.

İçindekiler

  • Apache Kafka’yı Tanıyalım
  • Spring Boot & Apache Kafka Uygulama Örneği
    • application.yaml
    • model
    • Producer Servisi
    • Consumer Servisi
    • Rest Controller

Spring Boot uygulamasına geçmeden önce Apache Kafka’yı tanıyalım.

Apache Kafka’yı Tanıyalım


Apache Kafka mesajlaşma sistemidir. Bu sistem sayesinde verileri platform ve uygulama bağımsız olarak tutan, yazan ve aktaran sistemdir. Özellikler büyük dataların güvenli şekilde aktarılmasını sağlayan bu yapı fazla kullanılmaktadır.

Apache Kafka için bazı terimleri bilmemiz gerekmektedir.

  • Publisher : Mesajı gönderen yerdir.
  • Topic, Mesajların tutulduğu yerdir.
  • Producer, Topic’lere veriyi yazan yerdir.
  • Partition, Topiclerden bir araya gelip oluşturduğu yapı,
  • Broker, Partitionlar bir araya gelip oluşturduğu yapı,
  • Consumer, mesajları okuyanlara denir.
  • Subscriber, Mesajı alan yerdir.

Spring Boot & Apache Kafka Uygulama Örneği


Spring initializer kullanarak maven uygulamamızı oluşturalım. Bağlımlılık olarak sadece;

  • Web
  • Kafka

bağımlıklarını seçiyoruz.

Örneğimizde Ogrenci modelimizdeki verileri gönderen ve alan bir rest uygulama yapacağız.

application.yaml

Apache kafka kongigürasyonu için application.yaml dosyamıza aşağıdakileri yazalım ve inceleyelim.

spring:
   kafka:
     consumer:
        bootstrap-servers: localhost:9090
        group-id: group_id
        auto-offset-reset: earliest
        key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
        value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
     producer:
        bootstrap-servers: localhost:9090
        key-serializer: org.apache.kafka.common.serialization.StringSerializer
        value-serializer: org.apache.kafka.common.serialization.StringSerializerCode language: CSS (css)

Mesaj yazan (producer) ve Mesaj okuyan (consumer) ayarlarını yapıyoruz.

  • bootstrap-servers: Apache Kafka servisinin çalışacağı portu belirliyoruz.
  • key – value serializer: Verinin key, value alanlarının serializer’i hangi sınıf üzerinden implemente edilmesi gerektiğini belirtiyoruz.
model

Modelimizi oluşturalım.

public class Ogrenci {
    private String adi;
    private int numarasi;

    public Ogrenci(String adi, int numarasi) {
        this.adi = adi;
        this.numarasi = numarasi;
    }

    public String getAdi() {
        return adi;
    }

    public void setAdi(String adi) {
        this.adi = adi;
    }

    public int getNumarasi() {
        returProducer Servisin numarasi;
    }

    public void setNumarasi(int numarasi) {
        this.numarasi = numarasi;
    }
}Code language: JavaScript (javascript)
Producer Servisi

Mesaj verisini yazacak olan servisimiz oluşturalım.

@Service
public class Producer {

    private static final Logger logger = LoggerFactory.getLogger(Producer.class);
    private static final String TOPIC = "ogrenciler";

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    public void sendMessage(String message) {
        logger.info(String.format("# -> Producer mesajı -> %s", message));
        this.kafkaTemplate.send(TOPIC, message);
    }
}Code language: JavaScript (javascript)

Producer servisimizde TOPIC’den gelen ogrenci verisini kafka templatemize mesajımızla birlikte yazıyoruz. Bu yazılan veriyi ise Consumer servisimizden okuyacağız.

Consumer Servisi

Mesaj verisini okuyacak olan servimizi oluşturalım.

@Service
public class Consumer {

    private final Logger logger = LoggerFactory.getLogger(Producer.class);

    @KafkaListener(topics = "ogrenciler", groupId = "group_id")
    public void consume(String message) throws IOException {
        logger.info(String.format("# -> Consumer mesajı -> %s", message));
    }
}Code language: JavaScript (javascript)

Kafka listenelerimiz topiclerin değeri ogrenciler olan verileri okumaktadır. Servisimiz konuya abone olarak logger’ımıza yazmasını sağlamakatayız.

Rest Controller

Kafkamız çalışıyor. Bu çalışmayı görüp ve değer göndererek yakalamak için rest servisimizi yazaım.

@RestController
@RequestMapping(value = "/kafkaController")
public class KafkaController {

    private final Producer producer;

    @Autowired
    KafkaController(Producer producer) {
        this.producer = producer;
    }

    @PostMapping(value = "/yayin")
    public void sendMessageToKafkaTopic(@RequestParam("mesaj") String mesaj) {
        this.producer.sendMessage(mesaj);
    }

}Code language: JavaScript (javascript)

yayin urlsinden mesaj değeri gönderek kafka servisine değerimizi gönderip logger’dan okuyabiliriz.


Projenin Kaynak Kodlarına Ulaş


Önceki Ders: Uygulama Yerelleştirme
Spring Boot Dersleri
Sonraki Ders: Java Bean Validation Kullanmak

Tags:

apache kafka dersleriapache kafka örnekspring apache kafkaspring boot derslerispring boot örneğiSpring Boot Uygulama Örneğispring dersleri

Paylaş

Diğer Yazılar

Spring Dersleri
Previous

Spring Boot Dersleri i18n Uygulama Yerelleştirme

Quarkus Dersleri Uygulama Örnekleri
Next

Quarkus Dersleri

Next
Quarkus Dersleri Uygulama Örnekleri
23 Aralık 2020

Quarkus Dersleri

Previews
19 Aralık 2020

Spring Boot Dersleri i18n Uygulama Yerelleştirme

Spring Dersleri

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri @ConditionalOnExpression Uygulama Ornegi

Spring Boot @ConditionalOnExpression Nedir? Uygulama Örneği

Spring Boot Dersleri Content Negotiation Uygulama Örneği

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Spring Boot Interceptor Nedir Kullanım Uygulama Örneği

Spring Boot Interceptor Nedir? Uygulama Örneği

Spring Data Redis Cache Kullanım Örneği

Spring Boot Data Redis Nedir? Distributed Cache Kullanımı

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Android
Struts
Java 21
Node.js
Spring Boot 3.0
Röportaj
Amazon Web Services
Vue.js
Gradle
Mikroservis Mimarisi
Redis
XCode
Debezium
Video
Spring Native
Spring Cloud Stream
Spring Security
MongoDB
PostgreSQL
JPA
iPhone Uygulama Geliştirme
Objective C
Git
Apache Kafka
Spring Data
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
Spring Jdbc Template
RabbitMQ
PrimeFaces
JDBC
Manset
Google
Spring
Spring MVC
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Java SE
Tanıyalım
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale