首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring AMQP: RabbitMQ延迟消息交换:`amqp_delay`未翻译为`x-delay`

Spring AMQP: RabbitMQ延迟消息交换:`amqp_delay`未翻译为`x-delay`
EN

Stack Overflow用户
提问于 2019-05-14 03:00:32
回答 1查看 83关注 0票数 0

我有一个使用延迟消息交换插件的x-delayed-message类型的RabbitMQ交换。

我知道当我返回一个设置了头AmqpHeaders.DELAYorg.springframework.messaging.Message时,延迟功能就会起作用。我假设框架在某个时刻将amqp_delay (AmqpHeaders.DELAY的值)转换为x-delay

但是当我返回一个org.springframework.amqp.core.Message时,消息只是用头amqp_delay而不是RabbitMQ期望的x-delay头发送。

这是Spring AMQP的疏忽吗?

如果AmqpHeaders类在spring-amqp工件中并且在org.springframework.amqp.support下,那么AmqpHeaders.DELAY的值不应该是x-delay而不是amqp_delay

如果不是,框架不应该至少转换头关键字吗?

还是我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-14 03:15:31

这样的转换是在SimpleAmqpHeaderMapper中完成的

代码语言:javascript
复制
.acceptIfNotNull(getHeaderIfAvailable(headers, AmqpHeaders.DELAY, Integer.class),
                amqpMessageProperties::setDelay)

它是从MessagingMessageConverter使用的。这个是在RabbitMessagingTemplate中使用的。

因此,如果您自己创建org.springframework.amqp.core.Message,则实际上需要填充x-delay标头。只有在org.springframework.messaging.Message的情况下才使用AmqpHeaders

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56118402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档