Messaging and streaming licensing is priced per core or by throughput, and premium connectors/features add up. Open brokers — Apache Kafka, RabbitMQ, NATS, Pulsar (and Kafka-compatible Redpanda) — remove the subscription while preserving familiar protocols. The key to a clean migration is bridging so producers and consumers move without message loss.
Choosing a target
- Kafka (KRaft mode) — the default for high-throughput streaming and log/event pipelines.
- RabbitMQ — classic queueing/routing (AMQP) for task and work-queue patterns.
- NATS — lightweight, low-latency pub/sub and request-reply.
- Pulsar / Redpanda — Kafka-API-compatible options with different operational tradeoffs.
Inventory first
Catalog topics/queues, partitions, ACLs, and delivery semantics (ordering, at-least-once vs exactly-once), then baseline throughput and consumer lag.
Bridge, then repoint
Stand up the target cluster and recreate topics/queues + ACLs. Bridge during transition — MirrorMaker 2 for Kafka, or Kafka Connect / shovels for cross-broker — to replicate messages and offsets. Then repoint producers first, consumers second, drain backlogs, and cut over once consumer lag reaches zero.
Validation
Throughput/latency benchmark, delivery-semantics and ordering tests, consumer-failover and replay tests, and a backpressure/soak test. The acceptance bar is “no message loss and ordering/semantics preserved under load.”
Sizing & cost
Bills scale with broker cores/throughput. Self-hosted brokers shift cost to compute + operations, usually far lower at scale. Size on broker cores and peak throughput.
De-risking
Validate semantics on a non-critical topic first, keep the bridge running until parity is confirmed, and don’t decommission the source broker until consumers are stable.
Open a source→target page for broker-specific steps and a per-core TCO model.