BabelQueue reaches 1.0.0 today — across the entire ecosystem, all at once. A message produced in one language is now consumed natively in another, over the broker you already run, with a public API you can build on.
What “1.0” means here
Two independent promises:
- A SemVer-stable public API. Every SDK is
1.0.0. Breaking changes now require a MAJOR bump and follow a deprecation policy — so you can pin and upgrade with confidence. - A frozen wire envelope. The on-the-wire format stays at
schema_version: 1. Av1producer is readable by everyv1consumer, in any language, indefinitely.
These are deliberately separate: your package versions can move independently while the bytes on the queue stay stable.
Six SDKs, one envelope
Every language ships a framework-agnostic core plus thin framework adapters:
- PHP —
babelqueue/php-sdk, with Laravel and Symfony adapters - Python —
babelqueue, with Celery and Django adapters - Go —
babelqueue-go, with Redis and RabbitMQ transport modules - Node.js —
@babelqueue/core, with BullMQ and NestJS adapters - Java —
com.babelqueue:babelqueue-core, with a Spring Boot adapter - .NET —
BabelQueue.Core, with a MassTransit adapter
Every one of them vendors and passes the same cross-SDK conformance suite, so two SDKs producing the same logical message emit byte-comparable envelopes.
The idea, in one line
Don’t change your broker — change only the serialization. BabelQueue replaces
language-specific serialization (like PHP’s serialize()) with a strict, minimal
JSON envelope and routes by a URN instead of a class name:
{
"job": "urn:babel:orders:created",
"trace_id": "7b3f9c2a-e41d-4f88-9b2a-1c0d5e6f7a8b",
"data": { "order_id": 1042 },
"meta": { "id": "…", "queue": "orders", "lang": "php", "schema_version": 1, "created_at": 1749132727000 },
"attempts": 0
}
A built-in trace_id flows across every hop and language, so an end-to-end trace is
one query away.
Get started
Producing your first polyglot message is a single call:
BabelQueue::publish('urn:babel:orders:created', ['order_id' => 1042]);
Pick your stack on the ecosystem, read the wire contract, or jump straight into a driver’s docs.
Thanks to everyone who tested the pre-1.0 builds. One envelope, every language.