Hi Folks, We have a bunch of legacy apps that send/receive messages using JMS with HornetQ 2.4.0. We wonder to what extent it is possible to migrate the HornetQ server to ActiveMQ Artemis, ideally without changing anything other than the configuration of these applications.
Our JMS clients typically include hornetq-core-client.jar, hornetq-commons.jar, netty.jar, hornetq-jms-client.jar and jboss-jms-api.jar on the classpath. We look up the JMS resources (that's JMS Queue, Topic, and ConnectionFactory instances) from the JNDI server co-located with the HornetQ standalone server (to do that, we also need the jnp-client.jar on the client classpath). The use of JNDI API along with JMS to make available the JMS objects is purely a convention. As far as I understand, Artemis (at least in standalone mode) chose to not have a JNDI server, and instead advocates for the direct instantiation of JMS Queue, Topic and ConnectionFactory instances. Does it mean that only HornetQ 2.4 clients that do not use JNDI at all and directly instantiate these objects are supported out of the box? I saw some test cases under /tests/extra-tests/protocols/hornetq that tend to demonstrate it. Artemis still provides "a client-side JNDI implementation that relies on special properties set in the environment to construct the appropriate JMS objects. In other words, no objects are stored in JNDI on the Artemis server, instead they are simply instantiated on the client based on the provided configuration." Therefore, and for the purpose of modifying only the JNDI configuration, we still must change the HornetQ jars to artemis-jms-client.jar, at least to look up the JMS connection factory ActiveMQInitialContextFactory, right!? Finally, is it possible to integrate Artemis with a JNDI server (for instance, within an application server like Wildfly)? We would declare some queues and topics in the broker.xml and make them available via the JNDI API. In this case, how to make Artemis aware of the JNDI server? In this case, we would have nothing to change on the client side, right!? Thanks for your support, Pascal GILLET