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

时间:2015-07-17 06:21:36

标签: java rabbitmq message-queue kill

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

我正在使用java来编码发件人和收件人。 我知道经纪人中存在哪些队列。

建议你这样做。

1 个答案:

答案 0 :(得分:1)

您可以检查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);
}

OR

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

这将根据您在参数&中提供的empty自动检查队列是not_in_use还是boolean。相应地删除它。