Tous les produits
Search
Centre de documentation

ApsaraMQ for Kafka:Pourquoi le client Go Sarama n'est-il pas recommandé ?

Dernière mise à jour :Sep 24, 2026

Description du problème

Le client Go Sarama présente des problèmes de compatibilité connus avec ApsaraMQ for Kafka qui peuvent affecter la production et la consommation de messages :

  • Absence de détection automatique des nouvelles partitions. Lorsque vous ajoutez des partitions à un topic, le client peut ne pas les détecter ni consommer leurs messages tant qu'il n'a pas été redémarré.

  • Comportement non standard du protocole. Le client Go Sarama ne respecte pas entièrement les normes du protocole Apache Kafka. En cas d'exceptions au niveau du broker, cela peut provoquer :

    • Une réinitialisation inattendue de l'offset (mécanisme OutOfRange). Si auto.offset.reset est défini sur Oldest(earliest), le client risque de reconsommer tous les messages depuis l'offset le plus ancien, ce qui entraîne un traitement en double à grande échelle.

    • Un état Rebalance persistant. Le client peut rester bloqué dans l'état Rebalance et cesser de consommer des messages.

Solution

Mettez à niveau le client Go Sarama vers la version 1.41.0 ou ultérieure, ou remplacez-le par un client Go Confluent.

Une démonstration utilisant un client Go Confluent est disponible à l'adresse kafka-confluent-go-demo.

Important

Si vous ne pouvez pas remplacer le client immédiatement, réduisez les risques en appliquant les mesures suivantes :

  • Définissez correctement la politique de réinitialisation de l'offset du consommateur. En production, définissez auto.offset.reset sur Newest(latest). N'utilisez Oldest(earliest) que dans les environnements de débogage ou lorsque les messages en double à grande échelle sont acceptables.

  • Réinitialisez les offsets des consommateurs depuis la console en cas de retard. Si une réinitialisation de l'offset provoque un important retard de messages, réinitialisez l'offset du consommateur à un moment précis dans la console ApsaraMQ for Kafka. Aucune modification du code ou du groupe de consommateurs n'est requise. Réinitialiser les offsets des consommateurs.