The difference between RabbitMQ, ZeroMQ, and Memphis lies in how they implement message routing, message persistence and software design.
RabbitMQ has complex routing features out of the box.
It has exchanges and queues.
Combined with routing keys, your code can use those entities to route messages as you want.
RabbitMQ has optional message persistence.
You’ll have to set it up to use it.
ZeroMQ supports basic routing.
It permits you to implement custom routing on it.
It is flexible.
It uses sockets and provides APIs to work with any programming language directly.
ZeroMQ has no persistence for messages after server restarts. It acts in memory and instantly in the network.
Memphis uses stations for routing.
Stations are like queues.
In Memphis, producers and consumers are attached to stations.
There are also consumer groups.
Together these features handle routing in Memphis.
Messages in Memphis have high persistence levels.