为什么在AMQP中需要messageId?

Min*_*woo 4 amqp spring-amqp

在Spring AMQP项目中,如果messageProperties没有messageId,则它们始终创建messageId.

像这样..

if (this.createMessageIds && messageProperties.getMessageId()==null) {
  messageProperties.setMessageId(UUID.randomUUID().toString());
}
Run Code Online (Sandbox Code Playgroud)

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

如果messageId不存在会发生什么?为什么AMQP需要messageId?

Gar*_*ell 8

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

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

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