BabelQueue
OngoingBabelQueue is a language-agnostic message queue standard that lets services written in different languages share the same queue without getting trapped by serialization lock-in. Instead of language-specific formats like PHP's serialize(), it defines a strict JSON envelope — frozen at schema_version 1 — that every language can read natively. It runs on Redis and RabbitMQ with no sidecar or broker plugin, adding under 2% overhead.
- Role
- Founder & Developer
- Duration
- June 2026 — Ongoing
Technologies
Skills
BabelQueue is an open-source message queue standard I built around the principle of “one language produces, another consumes; the same bytes.” One of the most insidious problems in polyglot architectures is that a job written to a queue by one service can’t be read by a consumer in another language: PHP’s serialize(), Python’s pickle, or language-specific type information embedded in the message trap the job inside the language that produced it. BabelQueue breaks this lock-in with a canonical JSON envelope that every language can parse using its standard library. The envelope carries the job identity (a stable, URN-based identifier instead of a class name), a trace_id for distributed tracing, the payload, metadata, and the retry count. The schema is frozen at schema_version 1; the field contract stays stable indefinitely, so a producer written today and a consumer added tomorrow can share the same wire without friction.
The standard was designed to be broker- and language-agnostic: the same envelope travels over Redis and RabbitMQ with interchangeable configuration, requires no new sidecar, proxy, or broker plugin, and adds under 2% overhead to existing infrastructure. It ships with production-ready SDKs and framework adapters for every language — Laravel and Symfony in PHP, Celery and Django in Python, Redis/RabbitMQ transports in Go, BullMQ and NestJS in Node.js, Spring Boot in Java, MassTransit in .NET — distributed through Packagist, PyPI, pkg.go.dev, npm, Maven Central, and NuGet respectively. Adoption is incremental: existing non-BabelQueue jobs keep working untouched, and migration can be done queue by queue. All components were released under the MIT license with v1.0.0.