【问题标题】:How to clean HornetQ messaging journal before/after performing a test?如何在执行测试之前/之后清理 HornetQ 消息日志?
【发布时间】:2019-02-06 18:14:01
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 详细说明如何做到这一点会很有用
      • 有4个文件夹:bindings、journal largemessages、paging、give a reboot并且不需要历史数据我们可以删除最后3个的内容吗?
      猜你喜欢
      • 2013-10-13
      • 2013-04-25
      • 2017-03-28
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      相关资源
      最近更新 更多