Tutorials

Step by step, in order, each one ending with something that runs.

The guide explains how a thing works and why it is that way. These are the other shape: start with nothing, finish with a working service, and understand what you typed by the end rather than before the beginning.

1 Your first message Connect, declare, publish, consume. No broker needed
2 Surviving failure Retries that do not block, dead letters, and replaying them
3 Never processing twice Idempotency, the outbox, and why "exactly once" is a lie
4 Seeing what happens Traces and metrics, and reading them when something is wrong

Each builds on the one before it, and each is a single file you can paste into a scratch project. Nothing is left as an exercise.

Before you start

<repositories>
  <repository>
    <id>acemq</id>
    <url>https://acemq-company.github.io/maven/</url>
  </repository>
</repositories>

<dependency>
  <groupId>org.acemq</groupId>
  <artifactId>acemq-amqp-core</artifactId>
  <version>0.7.15</version>
</dependency>
<dependency>
  <groupId>org.acemq</groupId>
  <artifactId>acemq-amqp-test</artifactId>
  <version>0.7.15</version>
</dependency>

Java 11 or newer. Tutorials 1 and 2 need no broker at all — acemq-amqp-test provides an in-memory one behind a memory:// URL that implements the same interface a real broker does. Tutorials 3 and 4 use Docker.

docker run -d --rm --name rabbit -p 5672:5672 -p 15672:15672 rabbitmq:4-management

If you would rather read code

The examples repository has 26 runnable programs plus a full enterprise application, each verified by CI on every commit. Tutorials teach; examples demonstrate. Start here, go there when you want to see a whole system rather than one idea.

Other languages

Only Java today. Ports, and a Spring Boot guide, follow the same numbering when they arrive, so tutorial 3 will teach the same thing in every language.