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

标签 java jms java-ee-6 jboss7.x hornetq

Arquillian 集成测试使用 JMS HornetQ 和持久化消息。一些测试让消息日志充满了未处理的消息,这些消息破坏了其他不需要数据的测试。

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

最佳答案

这在JMS API 本身中并不存在,但是在HornetQ QueueControl 管理对象中有一个方法'removeMessages(filter)'。这个方法可以在队列的 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);

关于java - 如何在执行测试之前/之后清理 HornetQ 消息日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509012/

相关文章:

java - 在扑克程序中测试两对

java - 在 Spring 中创建临时 JMS jms 主题

java - 新文件在 Eclipse 目录中创建,而不是在当前目录下

java - 存储/恢复整个应用程序的快照/状态

java - 如何找到maven命令的参数名称?

java - JMS 确认异步消息

java - EJB 3.1 应用程序部署为 WAR-only : What about ejb-jar. xml?

java - 在 Java EE 中创建 Netty 监听器

java - 从单链表中删除重复项

java - 如何使用注释获取hornetq connetionfactory对象