As mensagens normais são o tipo padrão no ApsaraMQ for RocketMQ. Diferentemente das mensagens ordenadas, agendadas, atrasadas e transacionais, não possuem recursos especiais. Esse tipo suporta comunicação assíncrona e desacoplada entre produtores e consumidores. Utilize mensagens normais quando sua aplicação exigir entrega confiável, mas dispensar sequenciamento rigoroso ou entrega programada.
Quando usar mensagens normais
Mensagens normais adequam-se a qualquer cenário que priorize a confiabilidade da transmissão em vez da ordem de processamento. Exemplos comuns incluem desacoplamento de microsserviços, integração de dados e arquiteturas orientadas a eventos:
-
Desacoplamento de microsserviços: Um serviço upstream encapsula a criação do pedido e o pagamento em uma mensagem normal independente e a envia ao broker do ApsaraMQ for RocketMQ. Os serviços downstream assinam independentemente e processam a mensagem conforme sua própria lógica. Cada mensagem é autossuficiente, sem dependências cruzadas.

-
Integração de dados: Um componente de instrumentação coleta logs de operação de aplicações frontend e os encaminha para o ApsaraMQ for RocketMQ. Cada mensagem representa um registro discreto de log. O broker armazena e entrega esses registros aos sistemas de armazenamento downstream sem transformá-los. As aplicações backend processam as tarefas subsequentes.

Ciclo de vida da mensagem
Uma mensagem normal passa por cinco estágios entre a criação e a exclusão:

|
Estágio |
Descrição |
|
Inicializado |
O produtor constrói a mensagem e a prepara para envio. |
|
Pronto |
O broker aceita a mensagem, tornando-a visível e disponível para os consumidores. |
|
Em trânsito |
Um consumidor recupera a mensagem e inicia o processamento. Se o broker não receber confirmação dentro de um período específico, ele tentará entregar novamente. |
|
Confirmado |
O consumidor registra o resultado do consumo. O broker marca a mensagem como consumida, mas não a exclui imediatamente. |
|
Excluído |
A remoção ocorre quando o período de retenção expira ou o espaço de armazenamento diminui. A exclusão segue uma estratégia rotativa que remove primeiro as mensagens mais antigas do arquivo físico. Para obter detalhes, consulte Armazenamento e limpeza de mensagens. |
Por padrão, o ApsaraMQ for RocketMQ retém todas as mensagens mesmo após a confirmação. Os consumidores podem reconsumir qualquer mensagem ainda não excluída.
Exemplos de código (Java)
Os exemplos a seguir usam o SDK do Apache RocketMQ 5.x para enviar e consumir mensagens normais. Cada exemplo configura uma conexão de cliente e executa uma única operação. Substitua os placeholders pelos valores reais antes de executar o código.
Para consultar a referência completa do SDK e exemplos em outras linguagens, veja SDKs do Apache RocketMQ 5.x.
Antes de começar
Prepare os seguintes recursos no console do ApsaraMQ for RocketMQ:
|
Recurso |
Onde encontrar |
|
Endpoint |
Página Instance Details > aba Endpoints. Use o endpoint de VPC para acessar instâncias do Elastic Compute Service (ECS) na mesma virtual private cloud (VPC). Utilize o endpoint público para acesso pela internet (requer ativação do recurso de acesso à internet). |
|
Topic |
Crie um tópico com |
|
Consumer group |
Necessário para os exemplos de consumidor. Crie um grupo no console. |
|
Credenciais (apenas endpoint público) |
Nome de usuário e senha obtidos na página Access Control > aba Intelligent Authentication. Dispensáveis para acesso via VPC, pois o broker autentica automaticamente. Também não são obrigatórias para instâncias serverless acessadas por VPC com o recurso de autenticação livre em VPCs ativado. |
Referência de placeholders
|
Placeholder |
Descrição |
Exemplo |
|
|
Endpoint da instância |
|
|
|
Nome do tópico |
|
|
|
Nome do grupo de consumidores |
|
|
|
Nome de usuário da instância (apenas endpoint público) |
-- |
|
|
Senha da instância (apenas endpoint público) |
-- |
Código de exemplo
Melhores práticas
Defina uma chave de mensagem globalmente única
Atribua um identificador de negócio — como ID de pedido ou de usuário — como chave da mensagem. Isso permite consultar mensagens individuais e seus rastreamentos no console do ApsaraMQ for RocketMQ.
Message message = provider.newMessageBuilder()
.setTopic(topic)
.setKeys("order-12345") // Use a unique business identifier.
.setTag("payment")
.setBody(payload)
.build();
Escolha o modo de consumidor adequado
|
Modo |
Funcionamento |
Indicado para |
|
Push consumer |
O broker envia mensagens para um callback |
Processamento orientado a eventos e de baixa latência, no qual o consumidor lida com cada mensagem assim que ela chega. |
|
Simple consumer |
A aplicação chama |
Cargas de trabalho que exigem controle manual de fluxo ou processamento em lotes. |