有使用JMS HornetQ的使用持续的消息的的Arquillian集成测试。有些测试离开的消息日记充满了破坏其它测试并不期待任何数据未处理的消息。
有没有告诉JMS清洁之前或执行试验后的消息轴颈的一种方式?
这不会对JMS API本身存在,但有一个在HornetQ的QueueControl可用管理对象的方法“removeMessages(过滤器)”。这种方法可以在JMX豆的队列中找到,但我不知道怎么弄,在的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);
如果你重新启动服务器,你可以删除分页和数据文件夹(同时保持绑定)。