首页 > 解决方案 > 延迟交换不直接发布消息

问题描述

我试图创建一个队列,我想创建延迟交换并将消息发送到相应的队列。但是我发现在创建交换之后,消息并没有发送到队列(它也不会被消费)。

但是这个奇怪的事情发生了,过了一会儿,让我们说 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 并且我已经安装了延迟交换插件。

我究竟做错了什么?提前致谢。

标签: javaspringrabbitmqspring-cloud-stream

解决方案


推荐阅读