SpringCloud Stream 整合 RabbitMQ-DLQ队列

  • Post author:
  • Post category:其他


前两篇介绍了SpringCloud Stream整合RabbitMQ、消费失败后重试maxAttempts属性:



一、属性-autoBindDlq

根据SpringCloud官方文档上,RabbitMQ消费者相关属性部分可以找到autoBindDlq:

在这里插入图片描述

可以看到其默认值为false。

接下来实际试验一下:



二、项目

本次就接着上次的项目继续使用,项目完整代码:

https://github.com/zrk333/mq-service


只是在上一篇

SpringCloud Stream 整合 RabbitMQ-消费失败后重试

的基础上进行修改,并沿用消费者消费方法中的异常int i = 1 / 0;



三、修改消费者



1、添加配置
spring.cloud.stream.rabbit.bindings.message-center-input.consumer.autoBindDlq=true

另外分组之前添加过,没有添加的需要添加一下,为了添加dlq队列时更好的分组,下面有截图可以看到

spring.cloud.stream.bindings.message-center-input.group=${spring.application.name}


2、验证

重启消费者,并调用生产者接口发送消息

在这里插入图片描述

依然抛出异常,现在看一下RabbitMQ网页页面:

在这里插入图片描述

可以发现多了一个dlp队列,并且Ready Messages 的值为1,多尝试几次还会增加:

在这里插入图片描述



3、查看dlq队列

点击页面队列名

message-center.mq-service-consumer.dlq

进入:

在这里插入图片描述

Get messages 部分可以查看当前在dlq队列中存放的消息,可以输入数量(相当于查看几条),点击按钮:

在这里插入图片描述

可以看到消息原封不动保存,现在将代码修复好,并手动尝试重新消费:



4、解决bug并重新验证

注释掉抛异常的代码,重启消费者,页面向下看到Move messages部分:

在这里插入图片描述

可以再输入框中填入目标队列名称(可以从

Get messages

部分的

Routing Key

进行

复制

),点击按钮,查看页面

在这里插入图片描述

在这里插入图片描述

消费者日志:

在这里插入图片描述

可以看到消费被重新放回

message-center.mq-service-consumer

队列,并重新消费。



四、补充-插件

假如未装插件,页面如下,此时没有Move Messages按钮

在这里插入图片描述

在这里插入图片描述

按提示需要执行下面命令开启插件,

不需要重启rabbitmq

rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management

在这里插入图片描述

在这里插入图片描述

  • 查看插件命令
rabbitmq-plugins list
  • 启动插件命令
rabbitmq-plugins enable xxx
  • 关闭插件命令
rabbitmq-plugins disable xxx



五、参考链接



版权声明:本文为qq_21067307原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。