Java 如何在执行测试之前/之后清理HornetQ消息日志?

Java 如何在执行测试之前/之后清理HornetQ消息日志?,java,jms,java-ee-6,jboss7.x,hornetq,Java,Jms,Java Ee 6,Jboss7.x,Hornetq,使用带有持久化消息的JMS HornetQ进行Arquillian集成测试。一些测试会让消息日志中充满未处理的消息,而其他测试则不需要任何数据 有没有办法告诉JMS在执行测试之前或之后清理其消息日志?这在JMS API本身中不存在,但在HornetQ QueueControl管理对象中有一个方法“removeMessages(filter)”。这个方法可以在队列的JMXbean中找到,但我不知道如何在Arquillian中获得它 幸运的是,您可以通过“hornetq.management”队列调

使用带有持久化消息的JMS HornetQ进行Arquillian集成测试。一些测试会让消息日志中充满未处理的消息,而其他测试则不需要任何数据


有没有办法告诉JMS在执行测试之前或之后清理其消息日志?

这在JMS API本身中不存在,但在HornetQ QueueControl管理对象中有一个方法“removeMessages(filter)”。这个方法可以在队列的JMXbean中找到,但我不知道如何在Arquillian中获得它

幸运的是,您可以通过“hornetq.management”队列调用管理操作。看见在实践中,以下各项应起作用:

     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);

如果要重新启动服务器,可以删除分页和数据文件夹(同时保留绑定)。

有关如何操作的详细信息有用有4个文件夹:绑定、日志大消息、分页、重新启动和无需历史数据。我们可以删除最后3个文件夹的内容吗?