May 12, 2017
Kafka vs JMS, SQS, RabbitMQ Messaging
Is Kafka a queue or a publish and subscribe system? Yes. It can be both.
Kafka is like a queue for consumer groups, which we cover later. Basically, Kafka is a queue system per consumer group so it can do load balancing like JMS, RabbitMQ, etc.
Kafka is like topics in JMS, RabbitMQ, and other MOM systems for multiple consumer groups. Kafka has topics and producers publish to the topics and the subscribers (Consumer Groups) read from the topics.
Kafka offers consumer groups, which is a named group of consumers. A consumer group acts as a subscription. Kafka broadcast to multiple consumer groups using a single queue as each consumer group tracks its own offset into the log. MOM is message oriented middleware, and includes all JMS implementors, and includes, HornetQ, ActiveMQ, RabbitMQ, IBM MQ Series, and Tibco.
When IBM MQ Series was first released, your mobile phone would be considered a super computer.
Kafka vs MOM
By design, Kafka is better suited for scale than traditional MOM systems due to partition topic log. Kafka can divide among Consumers by partition and send those message/records in batches. Kafka handles parallel consumers better than traditional MOM, and can even handle failover for consumers in a consumer group. Failover for most MOM systems are an afterthought.
Also, by moving location (partition offset) in log (message queue) to client/consumer side of the equation instead of the broker, there is less tracking required by Broker and you have more flexible consumers.
Kafka was written with mechanical sympathy, modern hardware, cloud in mind: disk drives are faster and bigger, servers have tons of system memory, and it is easier to spin up servers for scale-out then when traditional MOM systems were first designed and built. Expect messaging systems to catch up and for new messaging systems to come out.
To learn more about Kafka vs. MOM systems read our Kafka Architecture Low Level guide. We talk about the design goals of Kafka and compare it to traditional messaging systems (MOM).
- What is Kafka?
- Kafka Architecture
- Kafka Topic Architecture
- Kafka Consumer Architecture
- Kafka Producer Architecture
- Kafka Architecture and low level design
- Kafka and Schema Registry
- Kafka and Avro
- Kafka Ecosystem
- Kafka vs. JMS
- Kafka versus Kinesis
- Kafka Tutorial: Using Kafka from the command line
- Kafka Tutorial: Kafka Broker Failover and Consumer Failover
- Kafka Tutorial
- Kafka Tutorial: Writing a Kafka Producer example in Java
- Kafka Tutorial: Writing a Kafka Consumer example in Java
- Kafka Architecture: Log Compaction
AWS Cassandra Database Support
Kafka Support Pricing
Cassandra Database Support Pricing
Advantages of using Cloudurable™
Cloudurable™| Guide to AWS Cassandra Deploy
Cloudurable™| AWS Cassandra Guidelines and Notes
Free guide to deploying Cassandra on AWS
Kafka Tutorial PDF