Redefina o offset de um consumidor para reconsumir mensagens a partir de uma posição anterior ou de um offset específico de partição, ou avance para a posição mais recente e ignore mensagens acumuladas.
Pré-requisitos
Interrompa todos os clientes consumidores. O ApsaraMQ for Kafka não oferece suporte à redefinição de offsets para consumidores ativos.
Após interromper um cliente consumidor, o broker o considera offline somente depois que o período ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG expira (padrão: 10.000 ms).
Informações básicas
O ApsaraMQ for Kafka oferece os seguintes métodos de redefinição:
Iniciar o consumo a partir do offset mais recente: redefine o offset para a posição mais recente e ignora qualquer acúmulo de mensagens.
-
Iniciar o consumo a partir de um ponto específico no tempo: redefine o offset para um timestamp passado com base no momento em que as mensagens foram armazenadas. Desde que as mensagens estejam dentro do período de retenção do Kafka (padrão: 3 dias), essa opção garante que todas as mensagens a partir do timestamp especificado sejam reconsumidas sem perdas.
NotaAntes de redefinir o offset, interrompa todos os clientes consumidores e aguarde o término do período
ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG(padrão: 10.000 ms). Isso assegura que o broker reconheça todos os consumidores como offline antes que a redefinição tenha efeito. Redefinir offsets de consumidor por partição: redefine offsets apenas para partições específicas, evitando o reconsumo de mensagens já processadas corretamente em outras partições.
Esta operação altera apenas o offset do consumidor. Ela não exclui mensagens acumuladas.
Procedimento
Faça login no console do ApsaraMQ for Kafka.
Na página Overview, selecione uma região na seção Resource Distribution.
Na página Instances, clique em nome da instância desejada.
No painel de navegação à esquerda, clique em Groups.
Na página Groups, clique em Group ID desejado.
Na página Group Details, clique em Reset Consumer Offset.
-
No painel Reset Consumer Offset for Group, revise os Prerequisites e defina a política de redefinição.
-
Configure a opção Reset All Topics.
Clique em Yes para redefinir os offsets de consumidor de todos os tópicos.
Clique em No e insira o nome do tópico a ser redefinido na caixa de texto Topic.
-
Configure o Reset Method.
Clique em Reset Consumer Offset to Latest Offset e, em seguida, clique em OK.
Clique em Reset Consumer Offset to Offset at Specified Point in Time. No campo Point in Time, clique em ícone de calendário
e selecione um horário para iniciar o consumo. Depois, clique em OK.Clique em Reset Consumer Offsets by Partition. Na linha da partição desejada, insira o offset inicial na caixa de texto Consumer Offset e clique em OK.
-
Na caixa de diálogo Note, confirme as informações e clique em OK.
Perguntas frequentes
A redefinição de offsets de consumidor resolve falhas parciais no consumo de tópicos?
Redefinir offsets de consumidor pode ajudar a mitigar alguns casos de falha parcial no consumo de tópicos. No entanto, antes de prosseguir, investigue se o problema é causado por rebalanceamentos frequentes ou atribuição anormal de partições.
Se houver rebalanceamentos frequentes, verifique a versão do cliente Kafka e ajuste os parâmetros
session.timeout.msemax.poll.interval.mspara valores adequados à sua carga de trabalho de consumo.Verifique se o grupo de consumidores está inscrito corretamente no tópico desejado.
Caso a causa raiz seja confirmada como atribuição anormal de partições, a redefinição do offset permite que o grupo de consumidores retome o consumo das mensagens a partir da posição correta.
É possível continuar consumindo após alterar o ID do grupo de consumidores do Kafka?
Sim. Após alterar o ID do grupo de consumidores, o novo grupo pode continuar o consumo. Contudo, o offset inicial depende de ser o primeiro início do novo grupo e do estado atual do tópico. Antes de trocar o ID do grupo de consumidores, investigue a causa raiz de quaisquer problemas, como falhas de rede ou timeout de heartbeat, para evitar que o novo grupo enfrente questões semelhantes.
Excluir um grupo de consumidores do Kafka também exclui seus tópicos inscritos?
Não. Grupos de consumidores e tópicos são recursos independentes no ApsaraMQ for Kafka. Excluir um grupo de consumidores remove apenas o próprio grupo e seus offsets. Os dados e a configuração dos tópicos inscritos permanecem inalterados.
Como um grupo de consumidores do tipo spark-kafka-source ou Lindorm-Spark envia offsets de consumidor?
spark-kafka-source: este tipo de grupo de consumidores permite enviar offsets ao Kafka. Controle o envio automático de offsets definindo o parâmetro
enable.auto.commit. Alternativamente, definaenable.auto.commitcomofalsee chame manualmente a funçãocommit(offsets)para enviar os offsets no momento apropriado.Lindorm-Spark: ao usar o Lindorm-Spark para consumir mensagens do Kafka, envie os offsets manualmente. Defina
enable.auto.commitcomofalsee chamecommit(offsets)após a conclusão da lógica de consumo. Isso garante que os offsets sejam enviados somente depois que o processamento das mensagens terminar, evitando saltos de offset ou alarmes falsos de monitoramento causados pelo envio automático.
Documentos relacionados
Redefina offsets de consumidor programaticamente chamando a operação de API Redefinir o offset de consumidor de um grupo de consumidores.
Após a redefinição, verifique o offset de consumidor atualizado em Visualizar status de consumo.