Kafka-jak zatwierdzić offset po każdej wiadomości za pomocą wysokiego poziomu konsumenta?

Korzystam z usług wysokiej klasy konsumenta Kafki. Ponieważ używam Kafki jako "kolejki transakcji" dla mojej aplikacji, muszę upewnić się, że nie przegapię ani nie przeczytam ponownie żadnych wiadomości. Mam 2 pytania odnośnie tego:

  1. Jak zlecić przesunięcie do zookeeper? Wyłączę automatyczne zatwierdzanie i przesunięcie zatwierdzania po pomyślnym użyciu każdej wiadomości. Nie mogę znaleźć rzeczywistych przykładów kodu, jak to zrobić za pomocą wysokiego poziomu konsumenta. Czy ktoś może mi pomóc w to?

  2. Z drugiej strony, słyszałem, że zaangażowanie się w zookeeper może być powolne, więc innym sposobem może być lokalne śledzenie offsetów? Czy ta alternatywna metoda jest zalecana? Jeśli tak, to jak byś się do tego zbliżył?

Author: Hongyi Li, 2014-08-13

2 answers

Istnieją dwa istotne ustawienia z http://kafka.apache.org/documentation.html#consumerconfigs .

auto.commit.enable

I

auto.commit.interval.ms

Jeśli chcesz ustawić tak, aby konsument zatwierdził przesunięcie po każdej wiadomości, będzie to trudne, ponieważ ustawienie jest tylko po interwale czasowym, a nie po każdej wiadomości. Trzeba będzie zrobić pewne przewidywania stawki przychodzących wiadomości i odpowiednio ustawić czas.

Ogólnie rzecz biorąc, nie zaleca się utrzymywania tego odstępu zbyt mały, ponieważ znacznie zwiększa szybkość odczytu/zapisu w zookeeperze, a zookeeper zostaje spowolniony, ponieważ jest silnie spójny w całym kworum.

 20
Author: laughing_man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 01:10:36

Możesz najpierw wyłączyć automatyczne zatwierdzanie: auto.commit.enable=false

Następnie zatwierdź po pobraniu wiadomości: consumer.commitOffsets(true)

 19
Author: Yueheng Li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-29 18:55:53