Apache Kafka – zjištění údajů o konzumentovi

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.

Napsat komentář