如何使用Spring Cloud Stream在RabbitMQ的队列中添加功能“ x延迟类型:直接”?

时间:2018-07-09 11:05:39

标签: java spring rabbitmq spring-cloud-stream

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

  

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

您启用了插件吗?如果没有,您应该在日志中看到它。

  

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)

See the plugin documentation

另一种可能性是交换已经存在。交换配置是不变的。您将看到这样的消息...

  

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)

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

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