web-dev-qa-db-fra.com

Problèmes avec la période de rétention pour le sujet offset de kafka

Nous sommes confrontés à un problème avec Kafka. Nous avons un sujet avec seulement une partition et un seul consommateur dans un groupe de consommateurs. Le consommateur est arrêté depuis un mois. En attendant, les producteurs envoient des messages sur le sujet.

Lorsque nous redémarrons le consommateur, il n'est pas en mesure de consommer les messages. Je suppose que la compensation précédemment validée a été perdue, de sorte que le consommateur n'a aucune idée de trouver le point de départ au réveil.

Lorsque nous arrêtons et redémarrons le consommateur, le consommateur peut récupérer les nouveaux messages, mais tous les messages qui ont été envoyés précédemment n'ont jamais été consommés.

L'offset a-t-il été corrompu? La période de rétention pour les décalages de sujet interne kafka, signifie-t-elle que les derniers décalages validés ont été supprimés?

9
Joey Trang

La valeur de rétention peut être configurée dans kafka broker en utilisant:

offsets.retention.minutes

La valeur par défaut est 24 heures. Voir: rétention de décalage du groupe de consommateurs Kafka

7

nous étions également confrontés au même problème et j'ai fait des recherches à ce sujet. J'ai modifié les étapes ci-dessous.

Nous avons une conservation de 14 jours, nous avons donc modifié la rétention du sujet kafka) à 14 jours

Nous avons changé cleanup.policy de compact à delete en exécutant ci-dessous

./kafka-configs.sh  --alter --zookeeper localhost:2181 --entity-type topics
              --entity-name __consumer_offsets --add-config cleanup.policy=delete

Configuration mise à jour pour le sujet: "__consumer_offsets".

3
Naresh Kumar Kotha

La période de rétention par défaut pour le message (offset) en kafka est une semaine c'est-à-dire) 7 jours

Après la période de rétention, tous les décalages existants seront supprimés du courtier pour éviter un débordement de l'espace.

de sorte que le décalage validé précédent sera remplacé par le dernier décalage car le décalage précédent a été supprimé par kafka/zookeeper.

Si vous souhaitez conserver votre message pendant une longue période, spécifiez la valeur --retention-period lors de la création du sujet dans kafka.

1
Mani Maran