检查 rabbitMQ 中的持久队列是否有数据?

Check if a durable queue in rabbitMQ has data in it?

我在代理中有一些持久队列 运行。在某些时候,我想检查队列中是否有任何数据,如果队列为空则关闭或终止该队列。

我正在使用 java 对发送者和接收者进行编码。 我知道代理中存在哪些所有队列。

建议您的做法。

您可以检查 GetResponse 对象值以获取有关队列中是否有内容的信息。如果GetResponse为空,可以删除队列,认为队列为空。

ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection con = factory.newConnection();
        rabbitChannel = con.createChannel();
GetResponse response = rabbitChannel.basicGet(QUEUE_NAME, BOOLEAN_NOACK);
if(response != null){
String body = new String(responseQuestion.getBody());
// do whatever you want to do here
}
else{
rabbitChannel.queueDelete(QUEUE_NAME);
}

使用这个queueDelete(java.lang.String queue, boolean ifUnused, boolean ifEmpty)

这将根据您在参数中提供的 boolean 自动检查队列是否为 emptynot_in_use,并相应地删除它。