Descripción del problema
El cliente Sarama Go presenta los siguientes problemas conocidos de compatibilidad con ApsaraMQ for Kafka que pueden afectar la producción y el consumo de mensajes:
Las particiones nuevas no se detectan automáticamente. Cuando agrega particiones a un tema, es posible que el cliente no las detecte ni consuma mensajes de ellas hasta que lo reinicie.
-
Comportamiento fuera del estándar del protocolo. El cliente Sarama Go no cumple por completo con los estándares del protocolo de Apache Kafka. Durante las excepciones del broker, esto puede provocar lo siguiente:
Restablecimiento inesperado del desplazamiento (mecanismo OutOfRange). Si
auto.offset.resetse establece enOldest(earliest), el cliente podría volver a consumir todos los mensajes desde el desplazamiento más antiguo, lo que genera un procesamiento duplicado a gran escala.Estado de Rebalance persistente. El cliente puede quedarse atascado en el estado de Rebalance y dejar de consumir mensajes.
Solución
<!--@div {"id":"step_7xf_use_xkj","data-tag="step"}-->
Actualice el cliente Sarama Go a la versión 1.41.0 o posterior, o bien reemplácelo por un cliente Go de Confluent.
Hay una demostración del cliente Go de Confluent disponible en kafka-confluent-go-demo.
Si no puede reemplazar el cliente de inmediato, reduzca el riesgo con estas medidas:
Configure adecuadamente la política de restablecimiento del desplazamiento del consumidor. En entornos de producción, establezca
auto.offset.resetenNewest(latest). UseOldest(earliest)únicamente en entornos de depuración o cuando resulten aceptables los mensajes duplicados a gran escala.Restablezca los desplazamientos del consumidor desde la consola si se acumula un retraso. Si un restablecimiento de desplazamiento provoca un retraso significativo de mensajes, restablézcalo a un momento específico desde la consola de ApsaraMQ for Kafka. No se requieren cambios en el código ni modificaciones en el grupo de consumidores. Reset consumer offsets.