1. Kafkayı kurun ve çalıştırın. Versiyon 2.0.1
- Kafka'yı indirin.
- İndirdiğiniz dosyayı bilgisayarınız diskinde uygun gördüğünüz bir klasöre taşıyın. Aşağıdaki gibi;
- Kafka için bilgisayarınızda
Environment Variables
ayarlayın. - Çalıştırmak için konsola
kafka-server-start.bat %KAFKA_HOME%\config\server.properties
yazın ve enter tuşuna basın.
2. Zookeper kurun ve çalıştırın. Versiyon 3.4.13
- Zookeper'ı indirin.
- İndirdiğiniz dosyayı bilgisayarınız diskinde uygun gördüğünüz bir klasöre taşıyın. Aşağıdaki gibi;
- Zookeepr için bilgisayarınızda
Environment Variables
ayarlayın. - Çalıştırmak için konsala
zkserver
yazın ve enter'a basın.
3. RabbitMQ kurun.
veya
choco install rabbitmq
4. PostgreSQL Versiyon 14
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic PreparingEvent
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic CompletedEvent
PreparingEvent
Bu event, rapor talep edildiğinde isteği kuyruğa attığını, dinleyen consumer'lar için Preparing
durumunda event fırlatır. Aynı zamanda rapor talebini database'e Preparing
satatus'unda kaydeder.
CompletedEvent
Bu event ise kuyruğun tamamladığı rapor taleplerini Copleted
status'üne çekip dinleyen consumer'lar için bir event fırlatır. Aynı zamanda Preparing
olarak kaydedilmiş status'ü Completed
olarak günceller.
Eğer uygulamaların appsettings.json
dosyasında bulunan aşağıdaki alanın değerine InMemory
yazılırsa uygulama InMemory database olarak çalışacaktır.
"DatabaseConfigurationType": "", // InMemory
KafkaMessagingQueue.Api projesinin database'ni migration yapmak için;
$ ..\KafkaMessagingQueue.Persistence> dotnet ef migrations add Guide-1.0.1 -s ..\KafkaMessagingQueue.Api\
Var olan migration'u database'e update etmek için;
$ ..\KafkaMessagingQueue.Persistence> dotnet ef database update -s ..\KafkaMessagingQueue.Api\
KafkaMessagingQueue.ReportApi projesinin database'ni migration yapmak için;
$ ..\KafkaMessagingQueue.ReportApi.Application> dotnet ef migrations add Report-1.0.0 -s ..\KafkaMessagingQueue.ReportApi\
Var olan migration'u database'e update etmek için;
$ ..\KafkaMessagingQueue.ReportApi.Application> dotnet ef database update -s ..\KafkaMessagingQueue.ReportApi\
- Client'lar KafkaMessagingQueue.Api'den bir rapor talep ettiğinde. KafkaMessagingQueue.Api Client'a hazırlayacağına dair bir söz döner.
- Bu esnada KafkaMessagingQueue.Api, Client'ın bu isteğini Kafka'ya söyler. Kafkada işlemi kuyruğa atar.
- Kafka bir Topic adıyla Producer (Üretici) eventi oluşturur. KafkaMessagingQueue.Api'de bundan iki tane göreceksiniz.
- PreparingEvent; bu raporu hazırlamaya başladığına dair Cansumer'lara (Tüketicilere) bilgi verir.
- CompletedEvent bu ise raporu tamamladığında bilgi verir.
- Yurıdaki şekilde HTTP iletişim bölgesi diye adlandırılmış gri alan KafkaMessagingQueue.Api ve KafkaMessagingQueue.ReportApi arasında HTTP iletişimini ifade eder. Ortada kuyruksal bir iletişim yoktur.