JAVA獲取rabbitmq消息總數(shù)過程詳解
公司使用的是rabbitMQ,需要做監(jiān)控預警的job去監(jiān)控rabbitMQ里面的堆積消息個數(shù),如何使用rabbitMQ獲取監(jiān)控的隊列里面的隊列消息個數(shù)呢?
首先需要創(chuàng)建一個連接,配置文件注入相關的值,然后設置連接的相關信息,創(chuàng)建鏈接。
導入的包是使用:
import com.rabbitmq.client
@Value("${spring.rabbitmq.host}")
private String host;
@Value("${spring.rabbitmq.port}")
private Integer port;
@Value("${spring.rabbitmq.username}")
private String username;
@Value("${spring.rabbitmq.password}")
private String password;
ConnectionFactory factory = new ConnectionFactory();
//設置ip,port,用戶名和秘密
factory.setHost(host);
factory.setPort(port);
factory.setUsername(username);
factory.setPassword(password);
//創(chuàng)建鏈接
Connection connection = factory.newConnection();
//創(chuàng)建信道
Channel channel = connection.createChannel();
//創(chuàng)建一個type=direct 持久化的 非自動刪除的交換器
channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
而我使用的是直接創(chuàng)建一個DeclareOK:
String []queues = queueNames.split(",");
for(String queue : queues){
DeclareOk declareOk = channel.queueDeclarePassive(queue);
//獲取隊列中的消息個數(shù)
int num = declareOk.getMessageCount();
if(num > 100) {
//當隊列數(shù)超過100的時候,進行操作
}
}
這樣就可以根據(jù)獲取到每個隊列的堆積數(shù),然后進行應急處理。
說個題外話:
@Value("${business.consumerQueue}")
private String queueNames;
String []queues = queueNames.split(",");
在配置文件中配置:business.consumerQueue=nameQueue,numberQueue,phoneQueue
那么獲取到的那個字符串數(shù)組queues就是為String[3],其中分別是上述的三個隊列。
這樣做的話就可以不用改代碼,遵循封閉-開放原則,不用改原來的代碼,只需要修改配置文件中的代碼,用 “,” 相隔開,獲取到需要操作的隊列名字數(shù)組。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring Data MongoDB 數(shù)據(jù)庫批量操作的方法
在項目開發(fā)中經(jīng)常會批量插入數(shù)據(jù)和更新數(shù)據(jù)的操作,這篇文章主要介紹了Spring Data MongoDB 數(shù)據(jù)庫批量操作的方法,非常具有實用價值,需要的朋友可以參考下2018-11-11
Java數(shù)據(jù)結構中的HashMap和HashSet詳解
HashMap和HashSet都是存儲在哈希桶之中,通過本文我們可以先了解一些哈希桶是什么,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2023-10-10
基于HTML5+js+Java實現(xiàn)單文件文件上傳到服務器功能
應公司要求,在HTML5頁面上實現(xiàn)上傳文件到服務器功能,對于我這樣的菜鳥,真是把我難住了,最后還是請教大神搞定的,下面小編把例子分享到腳本之家平臺,供大家參考2017-08-08

