we have 2 Messaging Middlewares like RabbitMQ & IBMMQ and have clients on both the sides, Is there any way we can push messages from RabbitMQ so that clients that are connecting to IBMMQ can consume and vice versa, i mean if i send message to RabbitMQ that will land into IBMMQ broker ?
Related
I have been searching, and I couldn't find if it is possible to connect two rabbitmq instances together. I am thinking of this as an alternative to RabbitMQ Clustering feature.
My goal is that for each message that a broker receives, it routes to another broker. Does the exchange or queues in rabbitMQ allow to have this architecture?
Producer -> Broker <-> Broker -> Consumer
You can use exchange federation to publish to both the original broker and another (downstream) broker.
Can we design pub-sub patterns in RabbitMQ where a consumer can also act as a producer and send messages to the message broker?
pub-sub with the same service
Did you try to use producer API in consumer code? It should work...
You can find API docs for many languages in Client Documentation
Regarding design, consumers may consume, do some processing and then produce - publish to some other exchange of the same or other messaging broker instance...
It's design decision...
Yes, the consumer can also act as a producer. It's a common use case that the consumer sends back a new message/task about something else once the first message has been processed.
Make sure that you separate the connections for the publisher and the consumer.
RabbitMQ can apply back pressure on the TCP connection when the publisher is sending too many messages for the server to handle. If you consume on the same TCP connection, the server might not receive the message acknowledgments from the client, thus effecting the consume performance. With a lower consume speed, the server will be overwhelmed.
I am looking to implement rabbitmq on google compute engine to handle messages on my android and ios messaging app. I have heard that rabbitmq can be quite power hungry, so i am wondering what the best solution to combat this is?
Do i use a different protocol like MQTT or so i use something like GCM to handle the connection to and from the apps and let rabbitmq just handle queuing the messages?
You would never want make a direct connection from mobile device to your RabbitMQ server, especially if the app on the device is a consumer. RabbitMQ consumers have to poll RabbitMQ continuously to check if there are messages pending for them. You would want a web-server to handle actual HTTP POST/GET of messages from devices. The webserver will do two things:
Save the message to DB (along with the source and intended destination info)
queue APN/GCM push messages to a RabbitMQ (the broker here) exchange
you will need to build a daemon to monitor RabbitMQ for these push messages that have been queued. The daemon's sole task would be to connect or maintain a connection to Apple's or Google's push messaging services and notify your apps that they have a message pending. If a device is notified of a pending message, it contacts the webserver to consume the message
I am using RabbitMQ with the MQTT plugin, with both producer and consumer on QoS=1.
I am still very new to RabbitMQ so I would like to understand if there is a way/efficient pattern to ensure a fallback in case a consumer is not consuming the messages of the topic he has subscribed to.
For instance, the idea being to be able to send an alert to a server trigger another channel (email, push notification) after a few seconds if a client is not consuming the messages of the MQTT topic?
Thank you for your help!
You can set per-message or per-queue TTL and then catch expired messages with the help of Dead Letter Exchanges extension. That will act as a notification of stalled or slow consumer or no consumers at all.
I plan to use JMS bridge feature of ActiveMQ in order to synchronize my local ActiveMQ Queue with a remote Websphere MQ Queue. I think that the JMS bridging feature is basically polling the WMQ Queue, isn't it ? In this case where can I define the polling duration interval ?
Tks a lot
Nicolas
The ActiveMQ JMS Bridge does not poll, the bridge uses the client library from the broker to be bridged and registers an async consumer to receive incoming messages from the remote Broker. There's nothing to configure in regards to polling.