Sobes.tech
Junior — Middle

Jak wygląda proces potwierdzania przetwarzania wiadomości w Kafka?

sobes.tech AI

Odpowiedź od AI

W Apache Kafka potwierdzenie przetwarzania wiadomości (acknowledgment) odbywa się za pomocą mechanizmu commit offset.

Proces:

  1. Konsument otrzymuje wiadomość z topiku.
  2. Po pomyślnym przetworzeniu wiadomości, konsument zapisuje (commit) przesunięcie (offset) tej wiadomości.
  3. Kafka przechowuje informacje o ostatnim zatwierdzonym przesunięciu dla każdej grupy konsumentów.

W Go, korzystając z klienta Kafka (np. sarama lub confluent-kafka-go), potwierdzenie może być automatyczne lub ręczne:

  • Automatyczny commit — klient okresowo wysyła informacje o ostatnim przetworzonym offsetcie.
  • Ręczny commit — programista wywołuje jawnie metodę commit po przetworzeniu wiadomości, co zapewnia większą kontrolę i niezawodność.

Przykład z sarama (ręczny commit):

consumer, _ := sarama.NewConsumerGroup(brokers, groupID, config)
// W obsłudze wiadomości, po przetworzeniu:
session.MarkMessage(message, "") // oznacza wiadomość jako przetworzoną
// Po zakończeniu przetwarzania wywołuje się Commit()