为什么在 AMQP 中需要 messageId?
Why need messageId in AMQP?
在 Spring AMQP 项目中,
如果 messageProperties 没有 messageId,它们总是创建 messageId。
像这样..
if (this.createMessageIds && messageProperties.getMessageId()==null) {
messageProperties.setMessageId(UUID.randomUUID().toString());
}
我想知道什么是messageId。因此,我试图找出使用 messageId 的位置。但是我在 Spring AMQP 源中找不到它。
如果messageId不存在怎么办?
为什么在 AMQP 中需要 messageId?
仅当转换器的 createMessageIds
为真时才创建消息 ID - 默认情况下为假。
通常不需要,除非您在消费者端使用状态重试。
当使用有状态重试且传递失败时,消息将被代理拒绝并重新传递。由于RabbitMQ不包括header中的重试次数,我们必须记录尝试传递的次数,以便在达到maxAttempts
后我们可以放弃。消息 ID 用于查找此消息的重试状态。
在 Spring AMQP 项目中, 如果 messageProperties 没有 messageId,它们总是创建 messageId。
像这样..
if (this.createMessageIds && messageProperties.getMessageId()==null) {
messageProperties.setMessageId(UUID.randomUUID().toString());
}
我想知道什么是messageId。因此,我试图找出使用 messageId 的位置。但是我在 Spring AMQP 源中找不到它。
如果messageId不存在怎么办? 为什么在 AMQP 中需要 messageId?
仅当转换器的 createMessageIds
为真时才创建消息 ID - 默认情况下为假。
通常不需要,除非您在消费者端使用状态重试。
当使用有状态重试且传递失败时,消息将被代理拒绝并重新传递。由于RabbitMQ不包括header中的重试次数,我们必须记录尝试传递的次数,以便在达到maxAttempts
后我们可以放弃。消息 ID 用于查找此消息的重试状态。