首页 > 解决方案 > 如何使用 Spring Cloud Stream 在 RabbitMQ 的队列中添加功能“x-delayed-type:direct”?

问题描述

这是我的应用程序属性的一部分:

spring.cloud.stream.rabbit.bindings.studentInput.consumer.exchange-type=直接 spring.cloud.stream.rabbit.bindings.studentInput.consumer.delayed-exchange=true

但似乎在 RabbitMQ 管理页面中,它没有x-delayed-type: direct in the Args in 我的队列功能。我正在参考这个 Spring Cloud Stream 文档:https ://docs.spring.io/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/

我究竟做错了什么?先谢谢了

标签: javaspringrabbitmqspring-cloud-stream

解决方案


我刚刚对其进行了测试,并且效果很好。

在此处输入图像描述

你启用插件了吗?如果没有,你应该在日志中看到这个......

2018-07-09 08:52:04.173 错误 156 --- [127.0.0.1:5672] osarcCachingConnectionFactory:通道关闭:连接错误;协议方法:#method(reply-code=503,reply-text=COMMAND_INVALID - 未知交换类型'x-delayed-message',class-id=40,method-id=10)

请参阅插件文档

另一种可能性是交易所已经存在。交换配置是不可变的;你会看到这样的消息...

2018-07-09 09:04:43.202 错误 3309 --- [127.0.0.1:5672] osarcCachingConnectionFactory:通道关闭:通道错误;协议方法:#method(reply-code=406,reply-text=PRECONDITION_FAILED - 不等价的 arg 'type' 用于在 vhost '/' 中交换'so51244078':收到 ''x-delayed-message'' 但当前是 'direct' , 类 ID=40, 方法 ID=10)

在这种情况下,您必须先删除交易所。

顺便说一句,您还需要一个路由密钥;默认情况下,队列将与主题交换通配符绑定#


推荐阅读