RabbitMQ獲取隊列的消息數目


使用RabbitMQ,業務需求,想要知道隊列中還有多少待消費待數據。

方式一:

@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);
 
//創建鏈接
Connection connection = factory.newConnection();
 
//創建信道
Channel channel = connection.createChannel();
 
//創建一個type=direct 持久化的 非自動刪除的交換器
channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
String []queues = queueNames.split(",");
for(String queue : queues){
   DeclareOk declareOk = channel.queueDeclarePassive(queue);
   //獲取隊列中的消息個數
   int num = declareOk.getMessageCount();
   
}

方式二:

spring配置文件:

<!-- 連接配置 -->
<rabbit:connection-factory id="rabbitConnectionFactory" host="#{app['mq.broker.host']}" port="#{app['mq.broker.port']}" username="#{app['mq.broker.username']}" password="#{app['mq.broker.password']}" virtual-host="/" publisher-confirms="true"/>
<!-- mq模板 -->
<rabbit:template id="rabbitTemplate" connectionfactory="rabbitConnectionFactory" message-converter="jsonMessageConverter"/>

java代碼:

@Autowired
private RabbitTemplate rabbitTemplate;

ConnectionFactory connectionFactory = rabbitTemplate.getConnectionFactory();
// 創建連接
Connection connection = connectionFactory.createConnection();
// 創建通道
Channel channel = connection.createChannel(false);
// 設置消息交換機
channel.exchangeDeclare("amp.topic", "direct", true, false, null);
DeclareOk declareOk = channel.queueDeclarePassive(LETTER_CLASS_QUEUE);
//獲取隊列中的消息個數
int queueCount = declareOk.getMessageCount();
result.put("queueCount", String.valueOf(queueCount));
// 關閉通道和連接
channel.close();
connection.close();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM