Is that possible to communicate JMS Topic of HornetQ with ActiveMQ or vice versa - activemq

I have a HornetQ project on JBoss 6 using JDK-6, and an ActiveMQ project on WildFly 18 using JDK-11. Can I access the HornetQ topic in the ActiveMQ project or vice versa?

If you're using ActiveMQ Artemis embedded in WildFly 18 then you should be able to connect to it from your HornetQ client because ActiveMQ Artemis is based on the HornetQ code-base and has maintained backwards compatibility with older HornetQ clients.
However, you will not be able to use the ActiveMQ Artemis JMS client to talk to HornetQ.

Related

Migrate ActiveMQ "Classic" Postgres data store to ActiveMQ Artemis

I'm using ActiveMQ "Classic" in my project and need to update to Spring 6, Spring Boot 3 to use jakarta, but the ActiveMQ "Classic" client is not ready to use jakarta and Spring 6 requires jakarta connection and not javax connection.
So I decided to migrate to ActiveMQ Artemis and use the Artemis JMS client in my code because Artemis is already using jakarta.
But my ActiveMQ is using Postgresql store and I need to restart Artemis with the same store to not lose data. Are there tools to migrate activemq_msgs to new Artemis table?
There is no tool to migrate data directly from the "Classic" tables to the Artemis tables.
The recommendation would be to stand up your ActiveMQ Artemis instance next to your existing ActiveMQ "Classic" instance and then set up a bridge (or collection of bridges) or perhaps even a Camel route to move messages from one broker to another.

Sending message from ActiveMQ Artemis to ActiveMQ "Classic"

I'm using Apache ActiveMQ Artemis (N1) for my work, and recently I've got a task to send some messages to another ActiveMQ "Classic" (N2) which is used by another system. However, I don't know how should I write divert configurations at broker.xml file. Is it possible? Could you give an example of divert to another URL-address and queue. Where should I write login/password for connection to N2?
Diverts in ActiveMQ Artemis only work with local resources. To send messages to another instance of ActiveMQ Artemis you'd use a core bridge. However, that only works between instances of ActiveMQ Artemis. ActiveMQ "Classic" doesn't support the protocol which the core bridge uses.
In order to send messages from ActiveMQ Artemis to ActiveMQ "Classic" you'd need to use something like Camel or the JMS bridge shipped with ActiveMQ Artemis. Both of these solutions can be deployed as web applications using the embedded web application server in ActiveMQ Artemis. We ship examples of both. The Camel example is in examples/features/standard/camel/ and the JMS bridge example is in examples/submodules/inter-broker-bridge.

RabbitMQ Camel and STOMP

I successfully completed a POC using Spring Reactor Netty Stomp client (Spring messaging framework) to connect to RabbitMQ on port 61613 (port dedicated for STOMP). That was just a POC. Now I have to build something concrete to be able to deploy in prod environments. I was Googling Spring Messaging vs Spring Integration and stumbled upon Apache Camel.
RabbitMQ component page in the Camel documentation talks about port 5672 and that is AMQP. The STOMP component page talks about ActiveMQ.
I did not see any examples or documentation regarding Camel in conjunction with RabbitMQ and STOMP.
Can Apache Camel be used to connect to RabbitMQ on port 61613?
The Camel documentation for the STOMP component states:
The Stomp component is used for communicating with Stomp compliant message brokers, like Apache ActiveMQ or ActiveMQ Apollo.
Notice that it says like Apache ActiveMQ. It doesn't say it has to be Apache ActiveMQ. It just uses ActiveMQ as an example of a "Stomp compliant" message broker. If RabbitMQ supports STOMP then Camel's STOMP component should work without issue.
Looking at Camel's StompEndpoint it clearly uses the brokerURL from the configuration to make the connection to the Stomp broker. It uses the Fusesource Stomp client implementation which should work with any Stomp compliant broker.
It's also worth noting that Camel is an integration framework and Stomp is a simple, open messaging protocol so it doesn't make much sense for the Stomp component within Camel to only work with a couple of ActiveMQ brokers. It can (and will) work with any Stomp compliant broker (just as the documentation states).

Use ActiveMQ 5 and IBM MQ 8 in the same application

I have a java application that connects to both ActiveMQ and IBM MQ. I'm currently using IBM MQ 7.1 and trying to upgrade to use the MQ 8.0 client. The MQ 8 jars reference JMS 2.0 classes, like JMSRuntimeException. the ActiveMQ-all jar includes JMS 1.1 classes which conflict with JMS 2.0.
Is there any way to utilize both?
One easy way you can do it is to use the direct WebsphereMQ classes and NOT use it as a JMS provider, then your conflict will evaporate.

Sun JMS bridge to ActiveMQ to .NET

I have Sun's Message Queue 4.3. Default installation on localhost using imqbroker daemon. Opened one queue.
I want to consume messages written to the queue above from .NET.
I understood there is ActiveMQ solution, version 5.3.
Checked ActiveMQ for .NET (version 1.1) and it works OK for ActiveMQ queues which are similar to Sun JMS.
My problem is that I want to bridge my existing Sun MQ 4.3 to an ActiveMQ queue and the documentation in http://activemq.apache.org/jms-to-jms-bridge.html
is not very clear.
can someone point exactly how to map activemq's config file to bridge:
Sun MQ queue named QUEUE1 on imqbroker#localhost:7676 (maybe jms port 1545? default install)
to
ActiveMQ queue named QUEUE2 on activemq:tcp://localhost:61616
I'm loosing it .... Thanx
You can use Apache Camel JMS component to connect the different brokers:
AFAIK Camel is included in ActiveMQ.