主题列表的 activemq-artemis 管理消息请求没有响应

activemq-artemis management message request for list of topics isn't responding

我正在开发一个 java 服务程序,该程序以前使用 OpenMQ 作为 JMS 提供程序,但我正在将其转换为使用 activemq-artemis。

我需要从 artemis 获取现有 topics/queues 的列表。到目前为止,我有下面的代码,它是我根据 artemis 附带的示例结合我在网上找到的一些其他代码示例开发的(留下 try/catch):

    TransportConfiguration tportConfig = new TransportConfiguration(NettyConnectorFactory.class.getName());
    QueueConnectionFactory qcf = (QueueConnectionFactory) ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.QUEUE_CF, tportConfig);

    QueueConnection qConn = qcf.createQueueConnection();

    QueueSession session = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

    javax.jms.Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");

    QueueRequestor requestor = new QueueRequestor(session, managementQueue);

    qConn.start();

    Message mgtMsg = session.createMessage();

    JMSManagementHelper.putAttribute(mgtMsg, org.apache.activemq.artemis.api.core.management.ResourceNames.JMS_SERVER, "topicNames");

    Message reply = requestor.request(mgtMsg);

单步执行调试器中的每一行,据我所知代码一直有效,直到最后的 requestor.request() 方法调用。这个调用之后,好像线程黑洞了。调试器没有进入下一行,catch 块没有启动,artemis.log 没有记录任何类型的错误。如果我在 putAttribute 调用中使用字符串 queueNames,我会得到相同的结果。

我的代码是否有问题,或者有人可以让我了解可能发生的事情吗?

其他详细信息:artemis 服务器 2.1.0 和客户端代码 运行 在本地的单个开发机器 JDK7u65 上,测试代码在该项目之外 我可以发布和使用简单的消息 to/from 阿尔忒弥斯

谢谢。

...the code works as far as I can tell until the final requestor.request() method call. After this is invoked, it seems the thread black holes. The debugger doesn't come to the next line, the catch block isn't started and the artemis.log doesn't record any type of error.

这听起来像是 JMS 请求程序未收到对其发送的请求的响应时的正常行为。

artemis server 2.1.0 and client code are running locally on a single development machine

您尝试使用的常量 org.apache.activemq.artemis.api.core.management.ResourceNames.JMS_SERVER 实际上并不存在于 Artemis 2.1.0 中。您的客户必须使用 1.x 库而不是您在此处描述的库,否则您会遇到编译错误。

这可能是您问题的根源。换句话说,您正在尝试管理实际上并不存在的资源(即 JMS 服务器)。

也就是说,我本以为代理会记录一条关于无法找到资源的警告消息。

我推荐: