SpringCloud Stream 整合 RabbitMQ-DLQ隊列

前兩篇介紹了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

五、參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章