【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,不过没必要)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值