Any reference on how to map RabbitMQ patterns to Solace patterns
Hi,
I am looking out for any reference material which describes how to migrate a messaging solution from RabbitMQ to Solace? For example, RabbitMQ describes certain messaging patterns @ https://www.rabbitmq.com/getstarted.html , what I am looking for is a short guide which helps map these patterns and how to realize them using Solace constructs.
Answers
-
Hi @Ani ! Welcome to the Solace Community.
Good first question. There are quite a few similarities between Rabbit and Solace. But some differences as well. Most notably is the handling of persistent vs. non-persistent data. In Solace, if you use a queue, then it is persistent. There is no "in memory" queue like in Rabbit.
Generally in Solace, if you want to do non-persistent aka Direct Messaging aka in-memory only, then you:
- Consumer subscribes to a topic (e.g.a/b
), can use wildcards to match multiple topics (e.g.a/*
)
- Publish on a matching topic, DeliveryMode "Direct"If you want to do persistent aka Guaranteed Messaging aka stored-to-disk-in-the-broker, then you:
- Create a queue for the Consumer: e.g.q1
... you can use the PubSub+ Manager for this
- Add a topic subscription to the queue (e.g.a/*
)
- Now your queue will attract/store messages that match that topic
- Consumer binds to the queue q1
- Publish on a matching topic (e.g.a/hello
), DeliveryMode "Persistent"That's the summary. We always recommend publishing to topics, it provides the most flexibility.
In the Rabbit tutorials you linked, #2 could be accomplished in Solace by publishing directly to the queue name, but we don't typically recommend this... it limits future flexibility of being able to route that same published data elsewhere. There is no performance penalty in Solace for publishing on topics and having those mapped to queues.
For #4 (Routing), we would typically do this using our topic hierarchy... the published topic has different levels, and consumers would add a wildcard on the levels that it wants to receive everything on. E.g.
appName/region/publisher/status
).So I guess that Solace looks most like example #5: Topic Exchange. But when using Guaranteed messages and a queue, then it combines #2 and #5.
Hope that helps. Let me know!
aaron
3 -
Hi @Ani ,
In addition to the information provided by @Aaron, take a look at this blog post I wrote a while ago:
https://solace.com/blog/mapping-amqp-0-9-1-onto-pub-sub/
It gives some practical guidance on how to map the various exchange types from Rabbit onto Solace.
Topic exchanges are the most natural to port to Solace and nicely map to Solace topic with a queue subscribed to it.
Hope this post helps. Let me know, if you have further questions.
Cheers,
Christian4 -
Hi @Aaron and @ChristianHoltfurth - thank you very much for these inputs. Exactly what I was looking for to get started with.
@himanshu , thanks for your reply as well, but this sounds more like moving "messages" from RMQ to Solace, wereas I am more interested in the migration of applications from RMQ (amqp 0.9) to Solace.3