java - 延迟交换不直接发布消息
问题描述
我试图创建一个队列,我想创建延迟交换并将消息发送到相应的队列。但是我发现在创建交换之后,消息并没有发送到队列(它也不会被消费)。
但是这个奇怪的事情发生了,过了一会儿,让我们说 30 分钟,我再次尝试使用相同的代码,消息被发送到队列并被消费。
这是我的 application.properties 看起来像:
spring.cloud.stream.bindings.output.destination=output
spring.cloud.stream.rabbit.bindings.output.producer.routing-key-expression=output.webhook.delay
spring.cloud.stream.bindings.output.producer.required-groups=webhook.delay
spring.cloud.stream.bindings.output.content-type=application/json
spring.cloud.stream.bindings.input.destination=output
spring.cloud.stream.bindings.input.group=webhook.delay
spring.cloud.stream.rabbit.bindings.input.consumer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.input.consumer.dead-letter-routing-key=output.webhook.delay.dlq
spring.cloud.stream.rabbit.bindings.input.consumer.exchange-type=direct
spring.cloud.stream.rabbit.bindings.input.consumer.lazy=true
spring.cloud.stream.rabbit.bindings.input.consumer.delayed-exchange=true
spring.cloud.stream.rabbit.bindings.output.producer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.output.producer.dead-letter-routing-key=output.webhook.delay.dlq
spring.cloud.stream.rabbit.bindings.output.producer.exchange-type=direct
spring.cloud.stream.rabbit.bindings.output.producer.lazy=true
spring.cloud.stream.rabbit.bindings.output.producer.delayed-exchange=true
spring.cloud.stream.rabbit.bindings.output.producer.delay-expression=3000
在 RabbitMQ 的管理页面中,它显示它使用交换类型创建交换:x-delayed-message 并且我已经安装了延迟交换插件。
我究竟做错了什么?提前致谢。
解决方案
推荐阅读
- javascript - 使用 lodash 重塑 JSON 并减少
- node.js - 快递 req.body 为空
- javascript - 从父窗口计算新打开的窗口所花费的时间
- ios - Quickblox iOS:避免呼叫冲突
- amazon-web-services - 有没有办法限制对 s3 预签名 url 的访问
- assembly - 汇编中的函数是什么?
- javascript - 如何使用 React 将输入值附加到 HTML 元素中
- openshift - 如何在 Openshift 中使用命令行更新limits.memory?
- python - pandas:计算列表中每个元素在列表列中的唯一出现次数
- uml - PlantUML:如何
在图例和页脚与标题间距之间插入换行符?