Sobes.tech
Junior — Middle

Jak można określić fakt odczytania wiadomości w Kafka?

sobes.tech AI

Odpowiedź od AI

W Kafka fakt odczytania wiadomości jest określany za pomocą przesunięć (offsetów) w partycjach tematu. Każdy konsument (consumer) śledzi, do którego offsetu odczytał wiadomości w każdej partycji.

Aby określić, że wiadomość została odczytana, należy:

  • Upewnić się, że konsument pomyślnie przetworzył wiadomość.
  • Potwierdzić (commit) offset tej wiadomości w Kafka, czyli poinformować brokera, że wszystkie wiadomości do tego offsetu zostały przetworzone.

W Go, korzystając z klienta Kafka (np. sarama lub confluent-kafka-go), można jawnie zatwierdzać przesunięcia po przetworzeniu wiadomości. Jeśli offset jest zatwierdzony, wiadomość jest uważana za odczytaną i nie będzie ponownie dostarczana temu konsumentowi.

Przykład z sarama (uproszczony):

consumer.MarkMessage(msg, "") // Oznacz wiadomość jako odczytaną
consumer.CommitOffsets()       // Zatwierdź przesunięcia

W ten sposób fakt odczytania wiadomości to pomyślny commit offsetu w Kafka.