这是我的应用程序属性的一部分:
spring.cloud.stream.rabbit.bindings.studentInput.consumer.exchange-type =直接 spring.cloud.stream.rabbit.bindings.studentInput.consumer.delayed-exchange = true
但是似乎在RabbitMQ管理员页面上,我的队列中的Args中没有 x-delayed-type:direct 。我正在参考这份Spring Cloud Stream文档:https://docs.spring.io/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/
我在做什么错?在此先感谢:D
答案 0 :(得分:0)
我刚刚对其进行了测试,并且效果很好。
您启用了插件吗?如果没有,您应该在日志中看到它。
2018-07-09 08:52:04.173错误156 --- [127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory:通道关闭:连接错误;协议方法:#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] o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#method(回复代码= 406,回复文本= PRECONDITION_FAILED-虚拟主机'/'中交换'so51244078'的等价arg'type':接收到'x-delayed-message'但当前为'direct' ,class-id = 40,method-id = 10)
在这种情况下,您必须先删除交换。
顺便说一句,您还将需要一个路由密钥;默认情况下,队列将与主题交换通配符#
绑定。