I am trying to connect an Apache Artemis broker with an Amazon MQ broker to create a hybrid architecture. I have tried connecting ActiveMQ with Amazon MQ, and I could achieve it by using "network connectors" in the broker.xml file and it worked fine.
For connecting Amazon MQ and Artemis brokers I have added below shown "bridge configuration" and the "connector" to the Artemis broker.xml file
<bridges>
<bridge name="my-bridge">
<queue-name>factory</queue-name>
<forwarding-address>machine</forwarding-address>
<filter string="name='rotor'"/>
<reconnect-attempts>-1</reconnect-attempts>
<user>admin</user>
<password>12345678</password>
<static-connectors>
<connector-ref>netty-ssl-connector</connector-ref>
</static-connectors>
</bridge>
</bridges>
<connectors>
<connector name="netty-ssl-connector">ssl://b-...c-1.mq.us-west-2.amazonaws.com:61617?sslEnabled=true;</connector>
</connectors>
I'm getting an exception: ssl schema not found.
So I'm trying to understand whether connecting the Artemis and AmazonMQ brokers is same as connecting Activemq and AmazonMQ brokers (i.e by changing the configuration in the broker.xml file)? If so, what are the changes I need to make to the above shown configuration?
ActiveMQ Classic (i.e. 5.x) and Amazon MQ use the OpenWire protocol to establish connections in a network of brokers. ActiveMQ Artemis supports clients using the OpenWire protocol. However, ActiveMQ Artemis uses its own "core" protocol for bridges and clustering. Therefore you won't be able to create a bridge from ActiveMQ Artemis to ActiveMQ Classic or Amazon MQ since those brokers don't understand the Artemis "core" protocol.
The ssl schema is used by OpenWire clients, not "core" clients. That is why you can't create an Artemis bridge using it.
If you want to integrate Artemis and Amazon MQ I'd recommend something like Camel or even possibly the JMS bridge that ships with Artemis. You can see examples of both in this example which ships with Artemis.
Related
Please suggest the option to deploy multi-region fail-over with ActiveMQ Artemis?
Any functionality in Artemis similar to network of brokers?
I wonder if it is possible to configure message redelivery on the client side. I have read the ActiveMQ Artemis docs and have not found any information about this feature. So I made a conclusion that there is no opportunity to configure message redelivery on the client side. The only place to configure message redelivery is the broker.xml file. Am I right about it?
By the way I can configure the connection to ActiveMQ Artemis by using broker URL params or by application.yml since I using Spring Boot 2.x.
ActiveMQ Artemis supports AMQP, STOMP, MQTT, OpenWire, etc. Many clients exist for these protocols written in lots of different languages across all kinds of platforms. Whether or not a given client supports client-side redelivery is really up to the client itself. You don't specify which client you're using so it's impossible to give you a specific yes/no answer.
However, I can say that ActiveMQ Artemis ships a JMS client implementation which uses the core protocol. That client does not support client-side redelivery. However, the OpenWire JMS client shipped with ActiveMQ "Classic" does support client-side redelivery, and it can be used with ActiveMQ Artemis as well.
I am trying install ActiveMQ Browser, and I wanted to connect with my ActiveMQ Artemis server. How do we configure that?
I assume you're talking about this ActiveMQ Browser GUI tool.
If that assumption is correct then there's no way to integrate it with ActiveMQ Artemis as it's hard-coded to use the specific JMX management beans from ActiveMQ 5.x.
I recommend you use the ActiveMQ Artemis web console. It has a rich set of functionality that should cover most of the use-cases you're interested in. Among other things, it will allow you to:
Send new messages to addresses.
Delete messages.
Move messages to another address.
Create or delete addresses & queues.
Shutdown broker.
etc.
Is it possible to connect to HornetQ server using ActiveMQ Artemis client libraries (1.5.x or 2.x)?
ActiveMQ Artemis has kept compatibility with HornetQ in that HornetQ clients can connect to an ActiveMQ Artemis broker. Compatibility has also been maintained so that newer ActiveMQ Artemis clients can connect to older ActiveMQ Artemis brokers. However, there's no tests that cover ActiveMQ Artemis clients connecting to a HornetQ broker. It may work, but there's no guarantee. The recommendation would be to simply continue using HornetQ clients to connect to HornetQ brokers.
I want to use ActiveMQ to create a broker to connect to another Mosquitto broker.
And then, I can use ActiveMQ to receive the message from Mosquitto broker.
What I am done now is:
integrate the ActiveMQ with JBoss EAP 6.3.
create MQTT broker in ActiveMQ: http://activemq.apache.org/mqtt.html
But after I add NetworkConnector in broker-config.xml:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616"/>
<transportConnector name="mqtt" uri="mqtt://localhost:1883"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static:(tcp://mosquitto_server_ip:1883)"/>
</networkConnectors>
the server shows exception after starting:
"Network connection between vm://localhost#8 and
tcp:///mosquitto_server_ip:1883#42688 shutdown due to a remote error:
java.util.concurrent.TimeoutException"
I also try to use "mqtt://..." to connect, but it's still failed:
java.lang.IllegalArgumentException: Invalid connect parameters:
{wireFormat.host=0.0.0.0}
Does anyone know how to use JBoss ActiveMQ to connect to mosquitto broker?
This is not supported, the ActiveMQ Network Connector only works between ActiveMQ brokers using the native OpenWire protocol, MQTT is not supported. You would need to use something like Camel or some other bridging mechanism to support cross broker communication between ActiveMQ and Mosquito