如何設置Message ID
更新時間:
如需追蹤和識別消息,您可以在云消息隊列 RabbitMQ 版的Producer客戶端設置Message ID屬性,為每條消息設置唯一標識符。本文介紹Message ID的相關概念和設置方法。
什么是Message ID
Message ID(消息標識符)是消息的可選屬性,類型為short string。Message ID在業務上通常被設置為唯一,適用于追蹤和識別銷售單、工單等需要保證消息唯一的場景。云消息隊列 RabbitMQ 版服務端不會對消息進行冪等處理。如需實現消息冪等,即如果消息重試多次,消費者端對該重復消息消費多次與消費一次的結果是相同的,并且多次消費沒有對系統產生副作用,在為每條消息設置唯一Message ID的基礎上,您還需要在云消息隊列 RabbitMQ 版的Consumer客戶端對消息進行冪等處理,具體信息,請參見消息冪等。
設置方法
在云消息隊列 RabbitMQ 版的Producer客戶端設置Basic.Properties
的message-id
屬性。示例代碼如下:
Java
AMQP.BasicProperties props = new AMQP.BasicProperties.Builder().messageId("messageid").build();
channel.basicPublish("${ExchangeName}", "BindingKey", true, props, ("消息發送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", "hello", false, false, amqp.Publishing { ContentType: "text/plain", Body: []byte(body), MessageId: "messageId", })
Node.js
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
文檔內容是否對您有幫助?