2016-04-05 30 views
0

Şu anda kafka kuyruğuna birkaç yüz ileti yazan işlevsellik var. Ancak bu mesajların tümü tükendiğinde, ek işlevler de yürütmem gerekiyor. Boşaltıldığında haberdar olmak için bir kafka kuyruğuna dinleyici yerleştirmenin bir yolu var mı?Kafka Sırası Boşsa Kontrol Edin

+0

Boşaltılmış ile ne demek istiyorsunuz? Tüm mesajlar tüketilirse, sıra boş hale geleceği anlamına gelmez. – avr

+0

Sıraya özel bir mesaj koyabilirsiniz. – nha

cevap

3

Bu iki şekilde çözebiliriz diye düşünüyorum:

  1. Kafka'nın Fetch Response esasen bir bir bölümünde son mesajın ofset bir HighwaterMarkOffset içerir. Mesajınızın bu ofset olup olmadığını kontrol edebilirsiniz ve eğer öyleyse - sonuna ulaştınız. Bununla birlikte, üretici ve tüketici aynı anda çalışıyorsa bu işe yaramaz. Tüketici sadece mesajları daha hızlı tüketebilir ve ihtiyacınız olandan daha erken durabilir.
  2. Bir "zehirli hap" mesajı gönderin - 100 mesaj üretmeniz gerektiğini varsayalım. Ardından, üreticiniz bu 100 iletiyi + 1 özel iletiyi (örneğin bazı UUID'leri gönderir, ancak mantığınızdaki normal koşullar altında görünmediğinden emin olun) bu, "son" anlamına gelir. Tüketici tarafında, alınan mesajın zehirli bir ilaç olup olmadığını ve varsa kapatıldığını kontrol edersiniz.