Kafka, RabbitMQ and Pulsar measured side by side on ordering, replay and consumer scaling by driving the three client libraries directly, plus an operational-footprint measurement of each broker's own distribution. Nine tests, three brokers started without Docker, and every number in the documentation regenerated by scripts/run-all.sh.
67 lines
2.5 KiB
XML
67 lines
2.5 KiB
XML
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<!-- Every client version below is managed by spring-boot-dependencies 4.1.1, so the three
|
|
brokers are compared at the versions a Boot 4.1 application would actually get:
|
|
kafka-clients 4.2.1, amqp-client 5.30.0, pulsar-client 4.2.4. Read from
|
|
spring-boot-dependencies-4.1.1.pom, not from release announcements. -->
|
|
<parent>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-parent</artifactId>
|
|
<version>4.1.1</version>
|
|
<relativePath/>
|
|
</parent>
|
|
|
|
<groupId>com.ankurm</groupId>
|
|
<artifactId>broker-comparison</artifactId>
|
|
<version>1.0</version>
|
|
<packaging>jar</packaging>
|
|
|
|
<properties>
|
|
<java.version>25</java.version>
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter</artifactId>
|
|
</dependency>
|
|
|
|
<!-- The three client libraries, driven directly. The comparison is between the brokers'
|
|
delivery models, and going through three different Spring abstractions would put three
|
|
different sets of defaults between the measurement and the thing being measured.
|
|
What each Boot starter adds on top is covered in docs/06-what-spring-adds.md. -->
|
|
<dependency>
|
|
<groupId>org.apache.kafka</groupId>
|
|
<artifactId>kafka-clients</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.rabbitmq</groupId>
|
|
<artifactId>amqp-client</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.pulsar</groupId>
|
|
<artifactId>pulsar-client</artifactId>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!-- Provides the in-process KRaft broker used by the Kafka measurements: a real Kafka
|
|
broker, no Docker. -->
|
|
<dependency>
|
|
<groupId>org.springframework.kafka</groupId>
|
|
<artifactId>spring-kafka-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<!-- Each broker is started by its own script and the matching tagged tests are run on
|
|
their own; see scripts/run-all.sh, which passes -Dgroups=kafka|rabbit|pulsar. Running
|
|
"mvn test" with no group runs all three and needs all three brokers up. -->
|
|
|
|
</project>
|