Dic*_*nto 3 java spring rabbitmq spring-cloud-stream
这是我的应用程序属性的一部分:
spring.cloud.stream.rabbit.bindings.studentInput.consumer.exchange-type=direct 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/
我究竟做错了什么?先谢谢了
我刚刚测试过,效果很好。
你启用插件了吗?如果没有,您应该在日志中看到这一点...
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)
另一种可能性是交换已经存在。Exchange配置是不可变的;你会看到这样的消息...
2018-07-09 09:04:43.202 ERROR 3309 --- [127.0.0.1:5672] osarcCachingConnectionFactory:通道关闭:通道错误;协议方法:#method(reply-code=406,reply-text=PRECONDITION_FAILED - 虚拟主机“/”中交换“so51244078”的不等价参数“类型”:收到“x-delayed-message”,但当前是“direct” ,类 ID=40,方法 ID=10)
在这种情况下,您必须先删除交换。
顺便说一句,您还需要一个路由密钥;默认情况下,队列将与主题交换通配符绑定#。