Does Solace provide some kind of connector to read (subscribe) the (AMQP) messages from a RabbitMQ broker and publish them to Solace broker? (Analogous to Kafka Connect).
If I’m publishing the messages to a RabbitMQ and want these messages to be published to Solace from RabbitMQ, is there a solution from Solace or do I have to write a custom connector reading from Rabbit and publishing to Solace?
Hi Virat,
Solace doesn’t have a connector for RabbitMQ like they do for Kafka.
I looked at the AMQP and MQTT plugins for RabbitMQ.
Those plugins both provide the server implementation of the protocols, for connecting to clients.
Solace provides a server implementation as well, so those plugins can’t talk directly to Solace PubSub+ Broker.
So, yes, as far I can tell, you would need to implement a connector.
I am told that JMS over AMQP 1.0 might be the easiest to implement on the Solace side.
JMS is more consistent in what metadata you have to deal with, compared to various AMQP and MQTT implementations.
Solace offers tutorials for JMS over AMQP 1.0.
I am sorry I can’t be more help.
Rob
You can transparently connect Solace with RabbitMQ using the Rabbit MQ shovel plugin. You will also need the RabbitMQ AMQP1.0 plugin installed as well. You can then easily configure a shovel to consume message from Solace over AMQP 1.0 and you can create another shovel to push messages from Rabbit (0.9 or 1.0) to Solace over AMQP 1.0. It is simple to configure and shows pretty good performance as well.
Once the message is in the Solace Broker from Rabbit it is available for consumption by any of the Solace natively supported Transports, languages and/or APIs. Any message that is sent to Solace from any of the supported APIs, languages or transports will also be properly moved to Rabbit over AMQP via the RabbitMQ shovel.
In this case there is no need for connectors or adapters, it is just the the setup of the RabbitMQ Shovel plugin that can be done via the RabbitMQ GUI.
do we have connectors or adaptor to connect RabbitMQ with Message Broker now? Is it the only way is to install Rabbit MQ shovel plugin at RabbitMQ?
As far as I know, that’s still the only way. Rabbit’s AMQP (0.9.1) is not standard, they shouldn’t even call it AMQP since it’s completely incompatible with the 1.0 standard. It should be called RabbitMQP or something. haha
Maybe in the future Solace might eventually build a 0.9.1 bridge to Rabbit, like we’re doing with the Kafka protocol (not a standard either), but I haven’t heard anything yet.
In a github project I created a simple proof of concept to bridge RabbitMQ queues with Solace queues.
The only way to do this, is to find a bridge that can communicate with RabbitMQ in AMQ version 0-9-1 and with Solace using AMQP version 1-0-0.
You can probably do it using Spring-Boot and using starter for each brokers, but I found that the Shovel RabbitMQ plugin was also doing it.
In my persomal GitHub project, you can find the provisioning script to create the shovel
As pre-requisite, you will need to install the following plugins:
# `RUN` command comes from the Dockerfile (rabbitmq) in the above github project
# Install Rabbit plugins here
RUN rabbitmq-plugins enable rabbitmq_management && \
rabbitmq-plugins enable rabbitmq_amqp1_0 && \
rabbitmq-plugins enable rabbitmq_shovel && \
rabbitmq-plugins enable rabbitmq_shovel_management
With that I was able to brige any queue from or to RabbitMQ:
- FROM Solace TO RabbitMQ
- FROM RabbitMQ TO Solace
Each flow needs a separate shovel configuration.