Descrição do problema
O cliente Sarama Go apresenta os seguintes problemas conhecidos de compatibilidade com o ApsaraMQ for Kafka que podem afetar a produção e o consumo de mensagens:
Novas partições não são detectadas automaticamente. Ao adicionar partições a um tópico, o cliente pode não as detectar ou consumir até a reinicialização.
-
Comportamento de protocolo fora do padrão. O cliente Sarama Go não está em total conformidade com os padrões do protocolo Apache Kafka. Durante exceções no broker, isso pode causar:
Redefinição inesperada de offset (mecanismo OutOfRange). Se
auto.offset.resetestiver definido comoOldest(earliest), o cliente poderá reprocessar todas as mensagens desde o offset mais antigo e resultar em duplicação em larga escala.Estado de Rebalance persistente. O cliente pode ficar preso no estado de Rebalance e parar de consumir mensagens.
Solução
Substitua o cliente Sarama Go pelo cliente Confluent Go.
Um exemplo de cliente Confluent Go está disponível em kafka-confluent-go-demo.
Caso não seja possível substituir o cliente imediatamente, reduza os riscos com estas medidas:
Configure adequadamente a política de redefinição de offset do consumidor. Em produção, defina
auto.offset.resetcomoNewest(latest). UseOldest(earliest)apenas em ambientes de depuração ou quando a duplicação de mensagens em larga escala for aceitável.Redefina os offsets do consumidor pelo console em caso de acúmulo. Se uma redefinição de offset causar acúmulo significativo de mensagens, redefina o offset do consumidor para um ponto específico no tempo diretamente no console do ApsaraMQ for Kafka. Não é necessário alterar o código ou modificar o grupo de consumidores. Redefinir offsets do consumidor.