【spring cloud】stream集成rabbitMQ死信队列

【spring cloud】stream集成rabbitMQ死信队列,第1张

【spring cloud】stream集成rabbitMQ死信队列

如果多次重复消费依然不成功,总要有个兜底的,那就给它丢到死信队列(Dead Letter Queue, DLQ)里就好了。

在死信队列中的消息,不会主动向消费者发送消息,需要我们人工处理,比如将它们取出再次消费等。

引入依赖、创建topic等工作就不再赘述,可以参考上篇文章:【spring cloud】stream集成rabbitMQ,实现Topic订阅发布

配置如下:

#死信队列
spring.cloud.stream.bindings.dlq-consumer.destination=dlq-topic
spring.cloud.stream.bindings.dlq-producer.destination=dlq-topic
#重试次数(本机重试,不发回mq)(次数等于1相当于不重试)
spring.cloud.stream.bindings.dlq-consumer.consumer.max-attempts=2
spring.cloud.stream.bindings.dlq-consumer.group=dlq-group
#开启死信队列(死信队列名称默认为 topic.dlq )
spring.cloud.stream.rabbit.bindings.dlq-consumer.consumer.auto-bind-dlq=true

在测试时,可以抛出异常试一下,会发现超过阈值(本地重试max-attempts=2)后会抛异常,并将消息放入死信队列中。如下图:

dlq-topic.dlq-group只是正常的队列。死信队列名字的格式为topicName.queueName.dlq。也就是说这里实际的死信队列是dlq-topic.dlq-group.dlq。

而死信队列也可以通过move message把消息重新移入正常队列中进行重新消费。(其实正常队列也可以move,不过没必要)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5677500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存