Tous les produits
Search
Centre de documentation

ApsaraMQ for Kafka:Pourquoi l'utilisation du client Go Sarama n'est-elle pas recommandée ?

Dernière mise à jour :Aug 11, 2026

Description du problème

Le client Go Sarama présente les problèmes de compatibilité connus suivants avec ApsaraMQ for Kafka, susceptibles d'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 ou consommer leurs messages tant qu'il n'a pas été redémarré.

  • Comportement de protocole non standard. Le client Go Sarama ne respecte pas entièrement les normes du protocole Apache Kafka. En cas d'exception 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 reconsumer tous les messages depuis l'offset le plus ancien, entraînant un traitement dupliqué à grande échelle.

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

Solution

Remplacez le client Go Sarama par un client Go Confluent.

Une démonstration du client Go Confluent est disponible à l'adresse suivante : 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 la duplication massive de messages est acceptable.

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