Při asynchroním posílání zpráv je občas důležité vědět, kolik zpráv bylo přijato, kolik zpráv ještě čeká na zpracování atd. Pokud navážu na předchozí příspěvek, kde jsme si vytvořili test-topic a poslali do něj několik zpráv, můžeme k tomuto účelu použít script bin/kafka-consumer-groups.sh
. Ten nám zobrazí údaje pro určitou consumer group. Konzumentská skupina (consumer group) sdružuje konzumenty (consumers).
Konzumenta, který patří do určité skupiny vytvoříte pomocí volby --group
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --group test-group --from-beginning
Pokud pošlete do tématu (topic) několik zpráv a zavoláte skript, uvidíte základní údaje. Bylo posláno pět zpráv a všechny byly zkonzumovány.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test-group test-topic 0 5 5 0 consumer-test-group-1-23162c8a-13e8-46dc-9dca-a4baf27dc7b8 /127.0.0.1 consumer-test-group-1
Pokud máte konzumenta spuštěného a do topiku pošlete další zprávu, ta se ihned zkonzumuje.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test-group test-topic 0 6 6 0 consumer-test-group-1-23162c8a-13e8-46dc-9dca-a4baf27dc7b8 /127.0.0.1 consumer-test-group-1
Pokud ale konzument není spuštěný, zprávy se začnou hromadit.
bin/kafka-console-produceh --bootstrap-server localhost:9092 --topic test-topic >Message seven. >Messge eight.
Zde je výsledek spuštění skriptu kafka-consumer-groups.sh
.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group Consumer group 'test-group' has no active members. GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test-group test-topic 0 6 8 2 - - -
Aktuální offset je 6 (tolik zpráv bylo zpracováno) a log end offset je 8 (tolik zpráv bylo posláno). Zpoždění (lag) je tedy 2 zprávy.
Pokud nyní zpracujeme jednu zprávu (volba --max-messages
)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --group test-group --max-messages 1
Lag se snížil na jedna.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group Consumer group 'test-group' has no active members. GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test-group test-topic 0 7 8 1 - - -
Konzumentů může být ve skupině samožřejmě více. Pak dostanete informaci o vše konzumentech z dané skupiny.
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test-group GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test-group test-topic-2 0 2 2 0 consumer-test-group-1-f674749f-a9b9-46ef-9be4-53499075d837 /127.0.0.1 consumer-test-group-1 test-group test-topic 0 8 8 0 - - -
Všimněte si, že konzument pro topic test-topic-2 je aktivní (je zobrazeno jeho consumer id), kdežto test-topic nemá aktuálně žádného konzumenta.