Вы можете проверить значение объекта GetResponse
для получения информации о том, есть ли в ней что-то в очереди или нет. Если GetResponse
имеет значение NULL, вы можете удалить очередь, считая ее пустой.
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)
Это будет автоматически проверить, если очередь empty
и not_in_use
на основе boolean
вы предоставили в качестве аргументов & удалить его соответствующим образом.
как точно ifUnused boolean произведение? Для меня это достойно, если он проверяет, что ни один производитель не подключен к нему, а затем закрывается. Так ли это? –
@AnilKumar 'ifUnused' должен быть установлен как 'true', если очередь должна быть удалена, только если она не используется, аналогично случаю' ifEmpty' –