Todos os produtos
Search
Central de documentação

:Como definir um ID de mensagem

Última atualização: Aug 27, 2026

Para rastrear e identificar mensagens, defina a propriedade de ID da mensagem no cliente produtor do ApsaraMQ for RabbitMQ para atribuir um identificador exclusivo a cada mensagem. Este tópico descreve o que é um ID de mensagem e como defini-lo.

O que é um ID de mensagem

O ID de mensagem é uma propriedade opcional. Trata-se de uma string curta, geralmente definida com um valor exclusivo para fins de negócio. Esse recurso é útil em cenários que exigem mensagens únicas, como o rastreamento de pedidos de vendas ou chamados técnicos. O ApsaraMQ for RabbitMQ não realiza verificações de idempotência no lado do servidor. Para garantir a idempotência, implemente esse controle também no cliente consumidor do ApsaraMQ for RabbitMQ. A idempotência de mensagens significa que, se uma mensagem for reenviada várias vezes, o resultado do consumo da mensagem duplicada será idêntico ao consumo único, sem causar efeitos colaterais. Isso exige a definição de um ID exclusivo para cada mensagem. Para obter mais informações, consulte Message idempotence.

Métodos

No cliente produtor do ApsaraMQ for RabbitMQ, defina a propriedade message-id de Basic.Properties. Exemplo de código:

Java

AMQP.BasicProperties props = new AMQP.BasicProperties.Builder()
    .messageId("messageid")
    .build();
channel.basicPublish("<ExchangeName>", "RoutingKey", true, props,
    "Message body".getBytes(StandardCharsets.UTF_8));

Python

properties = pika.BasicProperties(
    app_id='example-publisher',
    content_type='application/json',
    message_id='messageid'
)

PHP

$msg = new AMQPMessage($msgBody, [
    'application_headers' => $amqpTable,
    'content_type'        => 'text/plain',
    'delivery_mode'       => 2,
    'message_id'          => 'messageid',
]);

Go

err = ch.Publish(
    "helloExchange",  // exchange
    "hello",          // routing key
    false,            // mandatory
    false,            // immediate
    amqp.Publishing{
        ContentType: "text/plain",
        Body:        []byte(body),
        MessageId:   "messageId",
    },
)

Node.js

channel.publish("exchange", "routingKey", Buffer.from("Message body"), {
    messageId: "messageid",
});