2016-05-28 56 views
1

在Spring AMQP項目中, 如果messageProperties沒有messageId,它們將始終創建messageId。爲什麼在AMQP中需要messageId?

這樣的..

if (this.createMessageIds && messageProperties.getMessageId()==null) { 
    messageProperties.setMessageId(UUID.randomUUID().toString()); 
} 

我想知道的信息id是什麼。所以,我試圖找出在哪裏使用messageId。但是我在Spring AMQP Source中找不到它。

如果messageId不存在會怎麼樣? 爲什麼在AMQP中需要messageId?

回答

2

只有在轉換器的createMessageIds爲true時纔會創建消息ID - 默認情況下它爲false。

它通常不是必需的,除非您在客戶端使用有狀態重試。

當使用有狀態重試並且遞送失敗時,該消息被拒絕並由代理重新遞送。由於RabbitMQ不包括標題中的重試次數,因此我們必須跟蹤交付次數,以便在達到maxAttempts之後放棄。消息ID用於查找此消息的重試狀態。