我正在尝试在spring cloud stream中实现延迟消息(不使用rabbitmq插件),但它不起作用
我使用spring-boot实现了它,它工作得很好。下面是我在spring-boot中做的示例代码。
我正在尝试在spring-cloud-stream中做同样的事情,但是没有帮助。下面是属性。
输出通道-生产者
spring.cloud.stream.bindings.output.destination=temp-channel
spring.cloud.stream.bindings.output.group=temp-channel-group输入渠道-消费者
spring.cloud.stream.bindings.input.destination=temp-channel
spring.cloud.stream.bindings.input.group = temp-channel-group
spring.cloud.stream.bindings.input.consumer.exchange-type=direct
spring.cloud.stream.bindings.input.consumer.bind-queue=true
spring.cloud.stream.bindings.input.consumer.binding-routing-
key=foo.bar.key
spring.cloud.stream.bindings.input.consumer.required-groups=final-
channel-group-1
spring.cloud.stream.bindings.input.consumer.auto-bind-dlq=true
spring.cloud.stream.bindings.input.consumer.dlq-ttl=5000
spring.cloud.stream.bindings.input.consumer.dlq-dead-letter-
exchange=final-channel-1
spring.cloud.stream.bindings.input.consumer.dlq-dead-letter-queue=final-
channel-group-1
spring.cloud.stream.bindings.input.consumer.dlq-dead-routing-
key=foo.bar.key当使用spring-boot实现时,我看到消息在临时队列中停留了指定的时间,然后移动到最终队列,我希望在spring云流中实现同样的效果。任何投入都将不胜感激。
发布于 2019-08-14 20:50:55
你不应该从temp-channel消费。
重要的是,您使用TTL生成一个队列,TTL过期并将消息路由到DLQ;然后您从DLQ消费。
消费者没有required-groups,生产者有。
这就是你所需要的:
制片人:
spring.cloud.stream.bindings.output.destination=temp-exchange
spring.cloud.stream.bindings.output.producer.required-groups=delayed-group
spring.cloud.stream.rabbit.bindings.output.producer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.output.producer.ttl=5000
spring.cloud.stream.rabbit.bindings.output.producer.dead-letter-exchange=final-dest
spring.cloud.stream.rabbit.bindings.output.producer.dead-letter-queue-name=final-dest.delayed-group消费者:
spring.cloud.stream.bindings.input.destination=final-dest
spring.cloud.stream.bindings.input.group=delayed-group它将创建这些队列:
temp-exchange.delayed-group
x-dead-letter-exchange: final-dest
x-dead-letter-routing-key: temp-exchange.delayed-group
x-message-ttl: 5000
durable: true
final-dest.delayed-grouphttps://stackoverflow.com/questions/57487688
复制相似问题