Apache ActiveMQ Artemis客户端可以连接到现有的ActiveMQ Broker 5.15.x



ActiveMQ 5.15.3不支持JMS 2.0 API。大多数开发人员建议项目如果需要2.0客户支持,请使用ActiveMQ Artemis。ActiveMQ Artemis客户端可以连接到ActiveMQ经纪人吗?

no,Artemis JMS客户端使用Artemis Core协议,ActiveMQ 5.X Broker不了解该协议,因此您无法与该客户端连接到它。即使您可以,这将无法启用任何JMS 2.0功能,因为经纪人需要支持2.0功能,例如共享订阅等。

根据您尝试做的事情,您仍然可以通过JMS 1.1 API的ActiveMQ JMS客户端进行良好的更改,例如使用虚拟主题来实现共享样式订阅行为。

Artemis经纪人确实了解OpenWire协议,因此您可以使用相同的ActiveMQ 5.X JMS客户端连接到两者,但是该客户端仅限于JMS 1.1 API。

两个经纪人还支持AMQP 1.0,因此QPID JMS AMQP 1.0客户端将能够与任何一个经纪人交谈。QPID-JMS是一个基于JMS 2.0的客户端,因此2.0的功能(例如共享订阅(对ActiveMQ 5.X无法使用,但是其他一些句法糖类型API(例如JMScontext基于JMScontext的位(主要是可行的。

正如蒂姆(Tim(所述,不支持阿耳emis派客户端。但是,如果您使用QPID客户端和AMQP 1.0协议,则至少JMS 2.0 API的某些部分*可行。

例如,以下代码可将消息传达给ActiveMQ 5.15

Hashtable<String,Object> properties = new Hashtable<>();
    properties.put("connectionfactory.connectionFactory","amqp://localhost:5672");
    properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jms.jndi.JmsInitialContextFactory");
    Context jndiContext = new InitialContext(properties);
    ConnectionFactory connectionFactory
            = (ConnectionFactory) jndiContext.lookup("connectionFactory");
    try (JMSContext context = connectionFactory.createContext();) {
        context.createProducer().send(context.createQueue("QueueX"),"Hello World" );
    }

使用qpid-jms-client 0.29。

您还需要与transport.transformer=jms配置AMQP连接器I ActiveMQ。

*(我没有尝试过所有功能,例如共享订户等,因为经纪人可能会或可能不会遇到这些功能。

相关内容

  • 没有找到相关文章

最新更新