RabbitMQ | Kafka |
---|---|
Variation of Pub-Sub, Request-Response & Point-to-Point patterns. | Pub-Sub for streaming platforms |
Smartk Broker Model | Smart Consumer Model |
Can ba synchronous/asynchronous | Durable message store |
Push based approach | Pull based approach |
Prioritize messages | Order/Retain/Guarantee messages |
Decoupled consumer queues | Coupled consumer partition/groups |
Use RabbitMQ when | Use Kafka when |
---|---|
No event replay | Replay |
No clear picture of E2E architecture | Streaming |
No producer changes for consumer additions | High throughput |
Language agnostic microservices architecture |
RabbitMQ | Kafak |
---|---|
Queues are single threaded | Storage overheads |
Compllex with more brokers | Streaming API for specific languages |
No events replay | Ordering per partition |
No native streaming support | Needs producer coordination with consumer for partition increases |
docker run -d -p 5672:5672 rabbitmq
version: '3' services: rabbitmq: image: 'rabbitmq:3-management-alpine' container_name: rabbitmq-stream ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DEFAULT_PASS: "admin"