This document outlines an agenda for a presentation comparing RabbitMQ and Kafka. The presentation will cover benefits of each technology, when to use each one, challenges faced with each, building blocks of RabbitMQ and Kafka, developer experiences, and include a live coding demo. Specific topics to be discussed include exchanges, queues and clustering in RabbitMQ, streaming vs messaging APIs and co-partitioning requirements in Kafka. The document also includes examples to illustrate operational tradeoffs between the two technologies for different use cases.
38. Spring Cloud
Stream
● Abstraction over
protocol
● Abstraction over
messaging vendor
● Same code
regardless of
messaging broker
Spring AMQP
● Provides a
"template" as a high-
level abstraction for
sending and
receiving messages.
● Support for
Message-driven
POJOs with a
"listener container".
● Similar to the JMS
support in the Spring
Framework.
RabbitMQ AMQP
Client
● Low level API to
RabbitMQ
Options for Java developers
Reactor RabbitMQ
● Reactive API for
RabbitMQ based on
Reactor and RMQ
Java Client
● Functional APIs
enables messages
to be
published/consumed
with non-blocking
back-pressure and
very low overheads