Saturday, June 8, 2024

Difference between Rabbit MQ and Kafka

Rabbit MQ Kafka
Rabbit MQ is basic Queue based messaging system based on FIFO Kafka adds on to the functionality of Rabbit MQ with Stream Processing System.
We use Advance message queueing protocol(AMQP) Kafka does not use Any such protocol or library.
Rabbit MQ has a smart broker, which allows routing, content based routing, Database routing. Kafka has A low level of broker comparatively. 
Rabbit MQ has a exchange, which can route messages to queues based on key. In Kafka, we publish a message and all the subscribers subscribed to the topic get the message.
Rabbit MQ delivers messages to consumers attached to the queue in round robin Fashion In database, we can set up change data capture(CDC) And send data to Kafka.
Rabbit MQ has a property prefetch To check the status of Queue.
We can define our own connectors to connect to legacy systems in Kafka.
Rabbit MQ has acknowledgement mechanism which does not auto delete message until acknowledgement comes. Kafka is basically Designed on fan out mechanism.
Rabbit MQ is an open source message distributor That works like post office and cloud. We can create a consumer group as all the consumers will get the same message.
Developed in 2007 and written in erlang programming language We can create multiple partitions within a topic. Kaka will mod key with Number of partitions To select partition, Number to Push message too.
Rabbit MQ allows micro services to communicate as-synchronously. The number of consumers must be equal to number of partitions in a consumer group.
Kafka deliver message in round robin fashion to each Partition in a consumer group.
We cannot retain messages in Rabbit MQ. We can retain messages in Kafka
Rabbit MQ is a Message Broker basically. How ever we can enhance it to perform Pub Sub Functionality. Kafka has Consumer offset via which we can check what messages has been delivered and what to deliver next.Rather than relying on a message queue, Kafka appends messages to the log and leaves them there, where they remain until the consumer reads it or reaches its retention limit.
RabbitMQ is an open-source distributed message broker that facilitates efficient message delivery in complex routing scenarios.It’s called “distributed” because RabbitMQ typically runs as a cluster of nodes where the queues are distributed across the nodes — replicated for high availability and fault tolerance. Kafka is purely based on Publish Subscribe Architecture geared towards streams and high-ingress data replay
RabbitMQ employs a push model and prevents overwhelming users via the consumer configured prefetch limit. This model is an ideal approach for low-latency messaging. It also functions well with the RabbitMQ queue-based architecture. Think of RabbitMQ as a post office, which receives, stores, and delivers mail, whereas RabbitMQ accepts, stores, and transmits binary data messages. Kafka employs a “pull-based” approach, letting users request message batches from specific offsets. Users can leverage message batching for higher throughput and effective message delivery.

No comments:

Post a Comment

Spring Boot

What is circular/cyclic dependency in spring boot? When two services are interdependent on each other, that is to start one service, we requ...