Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何添加功能”;x-延迟型:直接;在RabbitMQ中使用Spring Cloud Stream的队列中?_Java_Spring_Rabbitmq_Spring Cloud Stream - Fatal编程技术网

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

Java “如何添加功能”;x-延迟型:直接;在RabbitMQ中使用Spring Cloud Stream的队列中?,java,spring,rabbitmq,spring-cloud-stream,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-in功能中似乎没有x-delayed-type:direct。我正在参考这个Spring云流文档:

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

spring.cloud.stream.rabbit.bindings.studentInput.consumer.exchange type=direct spring.cloud.stream.rabbit.bindings.studentInput.consumer.delayed exchange=true

但是,在RabbitMQ管理页面中,我的队列的Args-in功能中似乎没有x-delayed-type:direct。我正在参考这个Spring云流文档:


我做错了什么?提前感谢:D

我刚刚测试过,效果很好

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

2018-07-09 08:52:04.173错误156---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:连接错误;协议方法:#方法(回复代码=503,回复文本=命令无效-未知交换类型“x-delayed-message”,类id=40,方法id=10)

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

2018-07-09 09:04:43.202错误3309---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法(回复代码=406,回复文本=先决条件_失败-vhost'/'中交换“so51244078”的参数“类型”不等效:收到“x延迟消息”,但当前为“直接”,类id=40,方法id=10)

在这种情况下,必须先删除exchange


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

绑定
x-delayed-type
是一项交换功能。它完全与队列抽象无关。请看我的答案-可能插件没有安装,或者交换已经存在。我已经在Dockerfile中安装了插件:FROM rabbitmq:3.6.12-management COPY./rabbitmq_delayed_message_exchange-20171215-3.6.x.ez/plugins/rabbitmq_delayed_message_exchange-20171215-3.6.x.ez RUN rabbitmq插件启用rabbitmq_delayed_message_exchange入口点[“docer ENTRYPOINT.sh”,“rabbitmq服务器”]所以我没有像你写的那样的错误。顺便说一下,我在exchange中看到了x-delayed-type:direct,而不是在队列中。这就是人们所期望的吗?是的;是交换延误了交货。