2013-07-31 16 views
5

Jestem nowy w Kafce, co zrozumiałem sofar dotyczące konsumenta jest zasadniczo dwa rodzaje realizacji.
1) The High level consumer/consumer group
2) Simple ConsumerApache Kafka Grupa konsumentów i prosty konsument

Najważniejszą częścią o wysokim poziomie abstrakcji jest stosowany, gdy Kafka nie dba o obsługę przesunięcie podczas Simple konsument zapewnia znacznie lepszą kontrolę nad zarządzaniem offsetowej. To, co wprawia mnie w zakłopotanie, to to, że jeśli chcę uruchomić konsumenta w środowisku wielowątkowym, a także chcę mieć kontrolę nad offsetem. Jeśli używam grupy konsumenckiej, czy to oznacza, że ​​muszę czytać z ostatniego offsetu przechowywanego w zookeeperze? jest to jedyna opcja, którą mam.

Odpowiedz

6

W większości przypadków interfejs API konsumenta wysokiego poziomu nie pozwala bezpośrednio kontrolować przesunięcia.

Po utworzeniu grupy konsumenckiej można powiedzieć, czy rozpocząć od najstarszej lub najnowszej wiadomości zapisanej przez kafka przy użyciu właściwości auto.offset.reset.

Można również kontrolować, kiedy konsument wysokiego poziomu wprowadza nowe przesunięcia do zookeepera, ustawiając wartość auto.commit.enable na wartość false.

Ponieważ konsument wysokiego szczebla przechowuje przesunięcia w zookeeperze, Twoja aplikacja może uzyskać bezpośredni dostęp do zookeepera i manipulować przesunięciami - ale będzie to poza interfejsem API wysokiego poziomu.

Twoje pytanie było trochę mylące, ale można skorzystać z prostego konsumenta w środowisku wielowątkowe. Oto, co robi konsument wysokiego szczebla.

0

W Apache Kafki 0,9 i 0,10 zarządzanie grupą konsumentów są przetwarzane wyłącznie w aplikacji Kafka przez Brokera (koordynacji) i tematu (do przechowywania państwowej).

Kiedy grupa konsumentów pierwszy subskrybuje temacie ustawienie auto.offset.reset określa gdzie konsumenci zaczynają konsumować wiadomości (http://kafka.apache.org/documentation.html#newconsumerconfigs)

Można zarejestrować ConsumerRebalanceListener aby otrzymać powiadomienie, gdy dany konsument jest przypisany Wątki/partycji.

Po uruchomieniu konsumenta można użyć seek, seekToBeginning i , aby pobrać wiadomości z określonego przesunięcia. seek wpływa następny poll dla tego konsumenta, i jest przechowywany na następny commit (np commitSync, commitAsync lub gdy upłynie auto.commit.interval, jeśli jest włączona).

W Javadocs konsumenckie wspomnieć bardziej konkretne sytuacje: http://kafka.apache.org/0100/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

Możesz połączyć zarządzanie grupami dostarczone przez Kafkę z ręcznym zarządzaniem przesunięciami poprzez wyszukiwanie (..) po przypisaniu partycji.

Powiązane problemy