I am not sure but this are rabbitmq stomp plugin exchange are used /temp-queue, /exchange, /topic, /queue, /amq/queue, /reply-queue/ . can you please explain the use of these each exchange.
RabbitMQ docs about STOMP document these.
See our docs: https://www.rabbitmq.com/stomp.html#d
Related
While using https://github.com/rabbitmq/cluster-operator I have a working setup with TLS enabled for AMQP. Now I would need to enable MQTT, however I donot find any example of enabling plugins with this operator.
Can someone help with an example of enabling MQTT over RabbitMQ via the cluster operator?
As mentioned in Rabbit MQ Documentation, in order to enable mqtt plugin, we have to add the corresponding plugin name "rabbitmq_mqtt".
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).
I have existing RabittMQ server set-up and we enabled MQTT plug-in to publish/subscribe mqtt messages.
We have pika client to process the existing queue messages . Right now , we want to use the same pika on_message() handler to process the mqtt message.
I am able to publish and subscribe mqtt message over eclipse paho client . We want to use the existing RabittMQ client(pika).
MQTT plug-in by default publish to amq.topic exchange . I want to publish the same message to my own exchange. Please let me know , how to get this.
The RabbitMQ team monitors this mailing list and only sometimes answers questions on StackOverflow.
If you want a consumer using the Pika library to receive MQTT messages that consumer must subscribe to the appropriate queue to which the MQTT messages are being published. Comprehensive documentation of how MQTT and AMQP can interoperate is available here.
You then say "I want to publish the same message to my own exchange". If you wish to use your own exchange instead of amq.topic, please see the "Custom Exchanges" section of this document. You must specify the name of the exchange in the rabbitmq.config file and create the exchange prior to publishing any messages. Note that this custom exchange must be a topic exchange.
The RabbitMQ documentation is a good resource and I suggest searching there when you have questions.
I am using RabbitMQ as a Stomp broker for Spring Websocket application. The client uses SockJS library to connect to the websocket interface.
Every queue created on the RabbitMQ by the Spring is durable while topics are non durable. Is there any way to make the queues non durable as well?
I do not think I can configure on the application side. I played a bit with RabbitMQ configuration but could not set it up either.
Example destination on RabbitMQ used for SUBSCRIBE and SEND:
services-user-_385b304f-7a8f-4cf4-a0f1-d6ceed6b8c92
It will be possible to specify properties for endpoints as of RabbitMQ 3.6.0 according to comment in RabbitMQ issues - https://github.com/rabbitmq/rabbitmq-stomp/issues/24#issuecomment-137896165:
as of 3.6.0, it will be possible to explicitly define properties for endpoints such as /topic/ and /queue using subscription headers: durable, auto-delete, and exclusive, respectively.
As a workaround you can try to create queues by your own using AMQP protocol and then refer to that queues from STOMP protocol.
Does any open source ESB support RabbitMQ out of the box?
It seems that apache camel based ESB works with Apache Qpid non RabbitMQ.
As of version 2.12 Camel now has a rabbitmq component.
WSO2 ESB has support for RabbitMQ based AMQP Transport. This documentation explains on how to configure this RabbitMQ based AMQP transport. Some samples also included in that document itself to try out.