Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Consumo por cluster e consumo por broadcast

Última atualização: Jun 27, 2026

O ApsaraMQ for RocketMQ entrega mensagens aos consumidores em um de dois modos: consumo por cluster (cada mensagem vai para um consumidor no grupo) ou consumo por broadcast (cada mensagem vai para todos os consumidores no grupo). O modo padrão é o consumo por cluster.

Escolha um modo de consumo

Vários consumidores identificados pelo mesmo group ID formam um grupo de consumidores. Os consumidores no mesmo grupo devem usar a mesma lógica de consumo, assinar os mesmos tópicos e tags e utilizar o mesmo modo de consumo. Para mais informações, consulte Consistência de assinatura.

Escolha o modo adequado à forma como os consumidores de um grupo devem receber mensagens:

Objetivo

Modo

Funcionamento

Distribuir mensagens entre consumidores para processamento paralelo

Consumo por cluster

Cada mensagem é entregue a exatamente um consumidor no grupo. Os consumidores compartilham a carga de trabalho.

Entregar cada mensagem a todos os consumidores

Consumo por broadcast

Cada mensagem é entregue a todos os consumidores no grupo. Cada consumidor processa o fluxo completo de mensagens.

Se você não definir explicitamente um modo de consumo, o sistema usará o consumo por cluster.

Consumo por cluster

No modo de consumo por cluster, o ApsaraMQ for RocketMQ distribui as mensagens de um tópico entre os consumidores de um grupo. Apenas um consumidor consome cada mensagem.

Clustering consumption

Casos de uso

  • Balanceamento de carga para processamento de alto throughput: Distribua um grande volume de mensagens entre vários consumidores para que cada um processe um subconjunto. Adicionar mais consumidores aumenta o throughput.

  • Processamento distribuído de dados: Divida o trabalho entre vários nós para que cada nó processe uma parte dos dados independentemente.

Observações de uso

  • Uma mensagem com falha não é necessariamente reentregue ao mesmo consumidor. Após um rebalanceamento, a mensagem pode ir para outro consumidor no grupo.

  • Os brokers do ApsaraMQ for RocketMQ armazenam o progresso do consumidor (offsets). Se um consumidor reiniciar, ele retomará a partir do último offset confirmado, garantindo que nenhuma mensagem seja ignorada.

  • Há suporte para nova tentativa de mensagem. Se um consumidor falhar ao processar uma mensagem, o broker a reentregará automaticamente. Para detalhes, consulte Nova tentativa de mensagem.

Consumo por broadcast

No modo de consumo por broadcast, o ApsaraMQ for RocketMQ entrega cada mensagem a todos os consumidores do grupo. Cada consumidor processa cada mensagem pelo menos uma vez. Esse modo é adequado para cenários em que vários consumidores processam simultaneamente o mesmo grupo de mensagens, como no processamento de pedidos.

Broadcasting consumption

Casos de uso

  • Notificações e comunicados: Envie uma atualização para todos os assinantes para que cada consumidor atue sobre ela.

  • Sincronização de dados em tempo real: Propague alterações de dados para todos os nós em um sistema distribuído para manter caches locais ou estados consistentes.

Observações de uso

  • Sem nova tentativa automática: O broker não reentrega mensagens cujo processamento falhou. Trate as falhas de consumo na lógica da sua aplicação.

  • Comportamento de reinicialização: Ao reiniciar, o consumidor começa a consumir a partir da mensagem mais recente. As mensagens publicadas enquanto o consumidor estava offline são ignoradas.

  • Maior uso de recursos: Como cada consumidor processa todas as mensagens, o consumo de recursos se multiplica. Utilize o consumo por cluster, a menos que seu caso de uso exija especificamente a entrega fan-out.

Comparação de recursos

O consumo por broadcast troca a riqueza de recursos pela entrega fan-out. A tabela a seguir lista o que cada modo suporta.

Recurso

Consumo por cluster

Consumo por broadcast

SDKs cliente TCP

Suportado

Suportado

SDKs cliente HTTP

Suportado

Não suportado

Mensagens ordenadas

Suportado

Não suportado

Redefinição de offset do consumidor

Suportado

Não suportado

Nova tentativa de mensagem

Suportado

Não suportado

Consulta e alerta de mensagens acumuladas

Suportado

Não suportado

Consulta de assinatura

Suportado

Não suportado

No modo de consumo por broadcast, o broker não tenta reenviar mensagens com falha, não rastreia o progresso do consumo nem oferece suporte à redefinição de offset. Projete seu consumidor para lidar com essas questões no nível da aplicação.

Rastreamento do progresso do consumidor

A forma de rastrear o progresso do consumidor difere entre os dois modos:

Aspecto

Consumo por cluster

Consumo por broadcast

Armazenado em

Broker do ApsaraMQ for RocketMQ

Cliente

Após reinicialização

Retoma a partir do último offset confirmado

Inicia a partir da mensagem mais recente

Confiabilidade

Maior — offsets gerenciados pelo broker sobrevivem a falhas do cliente

Menor — offsets gerenciados pelo cliente são perdidos na reinicialização; a probabilidade de consumo repetido é maior

Nova tentativa de mensagem

O broker reentrega automaticamente mensagens com falha

Sem nova tentativa automática; trate as falhas no seu código

Configure o modo de consumo

Defina o parâmetro MessageModel no código do SDK do seu consumidor. Se você não definir esse parâmetro, o sistema usará o consumo por cluster por padrão.

SDKs cliente TCP

Todos os exemplos de SDKs cliente TCP definem a propriedade MessageModel na configuração do consumidor.

Java

  • Consumo por cluster

      // Clustering consumption is the default. This explicit setting is optional.
      properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);
  • Consumo por broadcast

      properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING);

C/C++

  • Consumo por cluster

      // Clustering consumption is the default. This explicit setting is optional.
      factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::CLUSTERING);
  • Consumo por broadcast

      factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::BROADCASTING);

.NET

  • Consumo por cluster

      // Clustering consumption is the default. This explicit setting is optional.
      factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING);
  • Consumo por broadcast

      factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);

SDKs cliente HTTP

Os SDKs cliente HTTP suportam apenas o consumo por cluster. Nenhuma configuração é necessária.

FAQ

Por que o consumo por broadcast não entra em vigor após eu configurá-lo?

Isso ocorre quando o tipo de mensagem ou o SDK não suporta broadcast:

  • Mensagens ordenadas: Mensagens ordenadas suportam apenas consumo por cluster. A configuração MessageModel é ignorada.

  • SDK cliente HTTP: Clientes HTTP suportam apenas consumo por cluster. Para usar o consumo por broadcast, mude para um SDK cliente TCP.

Posso misturar modos de consumo dentro de um grupo?

Não. Todos os consumidores em um grupo devem usar o mesmo modo de consumo.

Se os consumidores no mesmo grupo tiverem configurações MessageModel diferentes, o consumo por broadcast entrará em vigor para todos os consumidores do grupo. Por exemplo, em um grupo de cinco consumidores onde dois estão definidos como CLUSTERING e três estão definidos como BROADCASTING, todos os cinco usarão o consumo por broadcast.

Próximos passos