KubeMQ
DeployScenariosReplace your messaging stack

Replace RabbitMQ with KubeMQ

Get your RabbitMQ (AMQP 0-9-1) app running on KubeMQ in three steps — enable the connector, swap the connection string, verify.

You need a license key to start KubeMQ — it's free, about 2-3 minutes (it includes creating a free account). Get one. Step 1 below starts the broker with the connector enabled.

Your RabbitMQ client keeps its library and its code — only the AMQP connection string changes, from your RabbitMQ host to a local KubeMQ server.

Drop-in level: endpoint-only (legend)

1 · Enable the connector

The RabbitMQ (AMQP 0-9-1) connector is disabled by default — enable it and publish its ports:

docker run -d \  --name kubemq \  -p 5672:5672 \  -p 5671:5671 \  -p 50000:50000 \  -e KUBEMQ_TOKEN=YOUR_LICENSE_KEY \  -e CONNECTORS_AMQP_ENABLE=true \  europe-docker.pkg.dev/kubemq/images/kubemq:next

2 · Point your client at KubeMQ

AMQP URI swap
# Before (RabbitMQ)
amqp://user:password@rabbitmq.example.com:5672/

# After (KubeMQ)
amqp://user:password@localhost:5672/

Same pika (or any AMQP 0-9-1 client library) code — queue_declare, basic_publish, and basic_consume all work unchanged.

3 · Smoke test

Publish then consume one message with pika:

publish
import pika

conn = pika.BlockingConnection(pika.URLParameters("amqp://user:pass@localhost:5672/"))
ch = conn.channel()
ch.queue_declare(queue="smoke-test", durable=True)
ch.basic_publish(exchange="", routing_key="smoke-test", body=b"hello-kubemq")
conn.close()
print("published ok")
consume
import pika

conn = pika.BlockingConnection(pika.URLParameters("amqp://user:pass@localhost:5672/"))
ch = conn.channel()
method, props, body = ch.basic_get(queue="smoke-test", auto_ack=True)
assert body == b"hello-kubemq", f"unexpected body: {body!r}"
conn.close()
print("consume ok:", body)

You should see:

published ok
consume ok: b'hello-kubemq'

This is the same publish/consume check as Migrating from RabbitMQ → Verification Smoke Test.

What carries over — and what doesn't

Your client library, code, queue and exchange declarations, publisher confirms, and DLX all carry over unchanged — only the connection string moves. AMQP transactions don't carry over (use publisher confirms instead), and a handful of declare arguments are accepted but inert — see the migration guide for the full deviation list.

Didn't work?

  • Wrong port — confirm 5672 (plain) or 5671 (TLS) is published and matches your connection string.
  • Connector not enabled — a stock server doesn't bind the AMQP listener until CONNECTORS_AMQP_ENABLE=true is set.
  • Auth mismatch — if authentication is enabled, the SASL PLAIN password must be a valid KubeMQ JWT.

Was this page helpful?

On this page