RabbitMQ vs Kafka - PrismoSkills



RabbitMQ vs Kafka - PrismoSkills

RabbitMQ vs Kafka


RabbitMQ uses message acknowledgments to ensure delivery state on the broker itself.
Kafka doesn't have message acknowledgments and it expects the consumer to remember about the delivery state.


Both of them use ZooKeeper to maintain their state across a cluster.


RabbitMQ was not designed for large volume and would fall over if the consumers were too slow.
However, post 2.0, RabbitMQ claims to handle slow batch consumers as well.
Kafka was designed from the beginning to handle both online and batch consumers.
So it can handle 100k+ events per second.
RabbitMQ's claim to that attribute is around 20k+ events per second.


Kafka uses Topic-like exchanges only.
RabbitMQ uses a richer variety of exchanges like Queues as well as Topics.


Kafka provides message ordering inside partitions.
So for strict ordering across partitions, the Kafka consumers have to be smart enough and resolve ordering across partitions themselves.


Kafka persists messages on disk and replicates them within the cluster to prevent data loss.
Each broker can handle terabytes of messages without performance impact.
Kafka has been tested to provide close to 200k messages/sec for writes and 3M messages/sec for reads.



Advanced Message Queuing Protocol (AMQP)

The Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware.
The defining features of AMQP are:
  1. Message orientation
  2. Queuing
  3. Routing (including point-to-point and publish-and-subscribe)
  4. Reliability and
  5. Security

It was originated in 2003 at JPMorgan Chase.

AMQP mandates the behavior of the messaging provider and client to the extent that implementations from different vendors are inter-operable, in the same way as SMTP, HTTP, FTP, etc. have created inter-operable systems. Previous standardizations like focused on standardizing the API level. AMQP however is a wire-level protocol. It is a description of the data-format that is sent across the network as a stream of octets. Thus it allows implementations to have different programming interfaces as long as they conform to the wire-level format.

Read full article from RabbitMQ vs Kafka - PrismoSkills


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts