检查 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
自动检查队列是否为 empty
和 not_in_use
,并相应地删除它。
我在代理中有一些持久队列 运行。在某些时候,我想检查队列中是否有任何数据,如果队列为空则关闭或终止该队列。
我正在使用 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
自动检查队列是否为 empty
和 not_in_use
,并相应地删除它。