为什么在AMQP中需要messageId?

时间:2016-05-28 02:29:43

标签: amqp spring-amqp

在春季AMQP项目中, 如果messageProperties没有messageId,则它们总是创建messageId。

喜欢这个..

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

我想知道messageId是什么。所以,我试着找出使用messageId的位置。但我在Spring AMQP Source中找不到它。

如果messageId不存在会怎样? 为什么AMQP需要messageId?

1 个答案:

答案 0 :(得分:6)

仅当转换器的createMessageIds为真时才会创建消息ID - 默认情况下为false。

通常不需要,除非您在消费者方面使用有状态重试。

使用有状态重试并且传递失败时,代理会拒绝并重新传递邮件。由于RabbitMQ不包括标题中的重试次数,因此我们必须跟踪已尝试传递的次数,以便我们可以在达到maxAttempts后放弃。消息ID用于查找此消息的重试状态。