Need advice about which tool to choose?Ask the StackShare community!
Maybe not an obvious comparison with Kafka, since Kafka is pretty different from rabbitmq. But for small service, Rabbit as a pubsub platform is super easy to use and pretty powerful. Kafka as an alternative was the original choice, but its really a kind of overkill for a small-medium service. Especially if you are not planning to use k8s, since pure docker deployment can be a pain because of networking setup. Google PubSub was another alternative, its actually pretty cheap, but I never tested it since Rabbit was matching really good for mailing/notification services.
In addition to being a lot cheaper, Google Cloud Pub/Sub allowed us to not worry about maintaining any more infrastructure that needed.
We moved from a self-hosted RabbitMQ over to CloudAMQP and decided that since we use GCP anyway, why not try their managed PubSub?
It is one of the better decisions that we made, and we can just focus about building more important stuff!
Pros of Kafka
- High-throughput116
- Distributed110
- Scalable83
- High-Performance77
- Durable62
- Publish-Subscribe34
- Simple-to-use17
- Open source13
- Written in Scala and java. Runs on JVM9
- Message broker + Streaming system6
- Avro schema integration4
- Suport Multiple clients2
- KSQL2
- Partioned, replayable log2
- Robust1
- Extremely good parallelism constructs1
- Simple publisher / multi-subscriber model1
- Fun1
Pros of NSQ
- It's in golang29
- Lightweight20
- Distributed19
- Easy setup18
- High throughput16
- Publish-Subscribe10
- Save data if no subscribers are found7
- Scalable7
- Open source6
- Temporarily kept on disk5
- Simple-to use2
- Free1
- Topics and channels concept1
- Load balanced1
- Primarily in-memory1
Pros of RabbitMQ
- It's fast and it works with good metrics/monitoring224
- Ease of configuration77
- I like the admin interface56
- Easy to set-up and start with49
- Durable20
- Standard protocols18
- Intuitive work through python18
- Written primarily in Erlang10
- Simply superb7
- Completeness of messaging patterns6
- Scales to 1 million messages per second3
- Reliable3
- Better than most traditional queue based message broker2
- Distributed2
- Supports AMQP2
- Great ui1
- Better routing system1
- Inubit Integration1
- Reliability1
- High performance1
- Runs on Open Telecom Platform1
- Clusterable1
- Clear documentation with different scripting language1
Sign up to add or upvote prosMake informed product decisions
Cons of Kafka
- Needs Zookeeper25
- Non-Java clients are second-class citizens24
- Operational difficulties6
- Terrible Packaging1
Cons of NSQ
- Long term persistence1
- HA1
- Get NSQ behavior out of Kafka but not inverse1
Cons of RabbitMQ
- Too complicated cluster/HA config and management8
- Needs Erlang runtime. Need ops good with Erlang runtime6
- Configuration must be done first, not by your code5
- Slow4