Any reference on how to map RabbitMQ patterns to Solace patterns

Ani
Ani Member Posts: 2

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

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 508 admin

    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

  • ChristianHoltfurth
    ChristianHoltfurth Member, Employee Posts: 68 Solace Employee

    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,
    Christian

  • himanshu
    himanshu Member, Employee Posts: 67 Solace Employee

    This recent codelab by Leah will be useful as well in demonstrating how to move messages from RabbitMQ to Solace via Shovel plugin.

  • Ani
    Ani Member Posts: 2

    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.