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