Apache Kafka – C# ile Producer ve Consumer Uygulaması Nasıl Yazılır? – Bölüm-2. Makalemizin ilk bölümünde Apache Kafka mimarisine hızlı bir giriş yapmıştık. Bu bölümde ise Kafka kurulumu yapıp, C# ile basit bir Producer ve Consumer uygulaması yazacağız.
NOT: Bilgisayarınızda güncel JRE’nin kurulu olması gerekiyor.
Yazının ilk bölümü için aşağıdaki linki kullanabilirsiniz.
https://www.mshowto.org/apache-kafka-nedir-genel-bakis-bolum-1.html
Resim-1: Java -version
https://Kafka.apache.org/downloads adresinden şu andaki güncel sürüm olan Scala 2.11 – Kafka_2.11-0.10.1.1.tgz dosyasını indirelim.
Resim-2: Kafka tgz dosyası
Sıkıştırılmış dosyayı C dizini altına açalım. Resim-3‘de göreceğiniz üzere bin\windows altında çalıştırabileceğimiz komutlar bat dosyaları halinde yer alıyor. Buradaki komutları kullanarak birçok işlemi yapabilirsiniz.
Resim-3: Kafka bat dosyaları
Öncelikle ZooKeeper’i çalıştırmamız gerekli. Bunun için Resim-4‘te göreceğiniz komutu çalıştıralım.
zookeeper-Server-start.bat ..\..\config\zookeeper.properties
Resim-4: ZooKeeper Server start komutu
Default kurulum işimizi göreceği için ekstra bir konfigurasyon yapmayacağız. Benzer şekilde şimdi de Resim-5‘te göreceğiniz gibi Kafka Server’ı çalıştıralım. Log dosyasını yeniden adlandıramadığı ile ilgili bir hata veriyor ama bu seferlik çok ciddiye almayalım. :)
Kafka-Server-start.bat ..\..\config\Server.properties
,
Resim-5: Kafka Server start komutu
Artık Local ortamda çalışan bir Kafka’ya sahibiz. Kodlamaya başlamadan önce tahmin edeceğiniz üzere bir Library ihtiyacımız var. Bunun için en sevdiğimiz tool NuGet Package Manager’a başvuralım. Bu makalede James Roland tarafından yazılmış Kafka-net‘in güncel versiyonu 0.9.0.65’i kullanacağız.
Resim-6: Kafka-net NuGet package
Öncelikle Kafka’ya bağlanacağımız host ve port bilgileri (default 9092) ile KafkaOptions nesnesini oluşturalım. Bunu kullanarak da BrokerRouter ve de asıl nesnemiz Producer‘ı oluşturuyoruz. Producer class’ı içerisinde yer alan asenkron SendMessageAsync methodu ile “MyTopic” içerisine 2 adet mesaj gönderelim. (bkz.Resim-7)
Resim-7: Producer
Mesajları gönderen kodumuz hazır, şimdi de mesajları alacak console uygulamasını yazalım. Burada da benzer şekilde KafkaOptions, BrokerRouter ve Consumer nesnelerimizi oluşturuyoruz. (bkz.Resim-8)
Resim-8: Consumer
Burada gördüğünüz Offset değerini, Partiton içerisindeki mesaja ait ID değeri olarak düşünebilirsiniz. Uygulamamızı çalıştırdığımızda ise Resim-9‘da göreceğiniz çıktı ile karşılaşıyoruz. Gönderdiğimiz mesajlar 0. Partiton’da 0. ve 1. Offset üzerinde bulunuyor.
Resim-9: Consumer output
Kullanabileceğiniz diğer Kafka Library’leri için https://cwiki.apache.org/confluence/display/KAFKA/Clients#Clients-.NET adresini inceleyebilirsiniz.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs : Apache Kafka, Apache Kafka nedir, Apache Kafka uygulama yazma, Apache Kafka uygulama gelistirme, Apache Kafka nedir, Apache Kafka tutorial, Apache Kafka spark streaming, Apache Kafka flume, Apache Kafka storm, Apache Kafka ayarlar, Apache Kafka application development, Apache Kafka java