Skip to content

RabbitMQ vs Kafka for .NET: one order pipeline on a quorum queue, a Kafka topic and a RabbitMQ stream on net10.0 - #2255

Open
vladimir-pecanac-main wants to merge 2 commits into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/125672-rabbitmq-vs-kafka-dotnet
Open

vladimir-pecanac-main wants to merge 2 commits into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/125672-rabbitmq-vs-kafka-dotnet

Conversation

@vladimir-pecanac-main

Copy link
Copy Markdown
Collaborator

Adds dotnet-client-libraries/RabbitMqVsKafka, a new folder for the new article "RabbitMQ vs Kafka for .NET Developers".

The same order-processing producer and consumer run on both brokers: a RabbitMQ quorum queue with acknowledge, reject and dead-lettering, a Kafka topic with offset commits, seek-back retry, a dead-letter topic, a second consumer group and replay by timestamp, and a RabbitMQ stream read twice.

  • docker compose up -d starts both brokers for the console demos.
  • dotnet test runs three integration tests with Testcontainers (Docker required); CI runs them on its ubuntu runners.
  • The test project logs console output at detailed verbosity so the CI log keeps the demo output the article quotes.

The article is not published yet. This PR stays open until the article goes live.

One console app runs the same five orders, one of them a poison order,
through a RabbitMQ quorum queue (ack, reject and requeue, dead-lettered by
delivery limit), a Kafka topic (manual commits, seek-back retries, an
app-written dead-letter topic, a second consumer group and a replay by
timestamp) and a RabbitMQ stream read twice from the first offset.

RabbitMQ.Client 7.2.2, Confluent.Kafka 2.15.1. docker-compose.yml starts
rabbitmq:4.3.6-management and apache/kafka:4.3.1 (KRaft, no ZooKeeper).
Three Testcontainers tests (xunit.v3.mtp-off 4.0.1, Testcontainers 4.15.0)
assert every outcome; the test project prints each test's console output
in the dotnet test log.
Testcontainers.Kafka 4.15.0 writes KAFKA_ADVERTISED_LISTENERS with a
trailing comma, and apache/kafka:4.3.1 exits with "Configuration
'advertised.listeners' values must not be empty". The upstream fix
(testcontainers-dotnet PR 1772) is not released yet, so the Kafka test's
start command drops the comma from the generated startup script.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant