Как очистить журнал сообщений HornetQ до / после выполнения теста?
Существует интеграционный тест Arquillian с использованием JMS HornetQ с постоянными сообщениями. Некоторые тесты оставляют журнал сообщений заполненным необработанными сообщениями, которые нарушают другие тесты, не ожидающие данных.
Есть ли способ сказать JMS очистить свой журнал сообщений до или после выполнения теста?
2 ответа
Этого не существует в самом JMS API, но есть метод removeMessages(filter) в объекте управления HornetQ QueueControl. Этот метод может быть найден в JMX Bean для Очереди, но я не знаю, как получить это в Arquillian.
К счастью, вы можете вызывать операции управления через очередь hornetq.management. См. http://docs.jboss.org/hornetq/2.2.5.Final/user-manual/en/html/management.html. На практике должно работать следующее:
Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management");
QueueRequestor requestor = new QueueRequestor(session, managementQueue);
Message m = session.createMessage();
JMSManagementHelper.putOperationInvocation(m,
"jms.queue.exampleQueue",
"removeMessages","*");
Message reply = requestor.request(m);
boolean success = JMSManagementHelper.hasOperationSucceeded(reply);
Если вы перезапускаете сервер, вы можете удалить папки подкачки и данных (сохраняя привязки).