Messaging: NATS, RabbitMQ and MQTT #6

Manually merged
mi merged 1 commits from messaging into main 2026-09-11 10:23:41 +02:00
Owner

Four databases told werkdock one thing about itself. A message broker
asks the same question — does the server listen where you said? — and
the three answers differed enough to change werkdock's quirk model
twice.

NATS is the cheap one: 27 MB, Apache 2.0, and it greets every connection
with an INFO line, so no client library is needed to prove a NATS and
not something else is there.

RabbitMQ covers both shapes a broker is used in, a queue and a topic
exchange routed by key. It also forced a cap on werkdock's port choice:
its Erlang distribution port is the node port plus 20000, so anything
above 45535 refuses to boot, and the ephemeral range werkdock drew from
starts at 32768.

Mosquitto is the first server werkdock knows it cannot move. Its shipped
config declares its listeners, which switches off the default one -p
would set, so the test asserts the published port IS 1883 — and is meant
to fail if werkdock ever learns better.

Two failures on the way were mine, not werkdock's: paho's close() throws
while the client is still connected, and RabbitMQ 4 refuses a transient
non-exclusive queue.

Needs werkdock 0.9.0, and nats:2.10-alpine, rabbitmq:4 and
eclipse-mosquitto:2 in the store.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

Four databases told werkdock one thing about itself. A message broker asks the same question — does the server listen where you said? — and the three answers differed enough to change werkdock's quirk model twice. NATS is the cheap one: 27 MB, Apache 2.0, and it greets every connection with an INFO line, so no client library is needed to prove a NATS and not something else is there. RabbitMQ covers both shapes a broker is used in, a queue and a topic exchange routed by key. It also forced a cap on werkdock's port choice: its Erlang distribution port is the node port plus 20000, so anything above 45535 refuses to boot, and the ephemeral range werkdock drew from starts at 32768. Mosquitto is the first server werkdock knows it cannot move. Its shipped config declares its listeners, which switches off the default one -p would set, so the test asserts the published port IS 1883 — and is meant to fail if werkdock ever learns better. Two failures on the way were mine, not werkdock's: paho's close() throws while the client is still connected, and RabbitMQ 4 refuses a transient non-exclusive queue. Needs werkdock 0.9.0, and nats:2.10-alpine, rabbitmq:4 and eclipse-mosquitto:2 in the store. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mi added 1 commit 2026-09-11 10:23:37 +02:00
Messaging: NATS, RabbitMQ and MQTT
werkator build succeeded after 02:47
597450e145
Four databases told werkdock one thing about itself. A message broker
asks the same question — does the server listen where you said? — and
the three answers differed enough to change werkdock's quirk model
twice.

NATS is the cheap one: 27 MB, Apache 2.0, and it greets every connection
with an INFO line, so no client library is needed to prove a NATS and
not something else is there.

RabbitMQ covers both shapes a broker is used in, a queue and a topic
exchange routed by key. It also forced a cap on werkdock's port choice:
its Erlang distribution port is the node port plus 20000, so anything
above 45535 refuses to boot, and the ephemeral range werkdock drew from
starts at 32768.

Mosquitto is the first server werkdock knows it cannot move. Its shipped
config declares its listeners, which switches off the default one -p
would set, so the test asserts the published port IS 1883 — and is meant
to fail if werkdock ever learns better.

Two failures on the way were mine, not werkdock's: paho's close() throws
while the client is still connected, and RabbitMQ 4 refuses a transient
non-exclusive queue.

Needs werkdock 0.9.0, and nats:2.10-alpine, rabbitmq:4 and
eclipse-mosquitto:2 in the store.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mi manually merged commit 1f27644870 into main 2026-09-11 10:23:41 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkprobe#6