Skip to content
@BabelQueue

Babel Queue

🌀 BabelQueue

Polyglot Queues, Simplified.

One strict JSON message envelope that Laravel, Symfony, Go, Python, Java, .NET and Node.js all speak — over the broker you already run.

WebsiteLicense: MITStatusBrokers


The problem

Frameworks like Laravel serialize queued jobs with PHP's serialize() — a PHP-only object graph. The moment a Go, Python or Java service needs to consume that job, it can't read it. The usual escapes — adopt Kafka/gRPC, or hand-roll bridge services — are heavy and invasive.

The idea

Don't change your broker. Change only the serialization.

BabelQueue replaces serialize() with a frozen, language-neutral JSON envelope and routes by a URN instead of a class name — so a job produced in one language is consumed natively in another, with a built-in trace_id for end-to-end tracing. No sidecar, no proxy, no broker plugin.

{
"job": "urn:babel:orders:created",
"trace_id": "7b3f9c2a-e41d-4f88-9b2a-1c0d5e6f7a8b",
"data": { "order_id": 1042, "amount": 99.90 },
"meta": { "id": "", "queue": "orders", "lang": "php", "schema_version": 1, "created_at": 1749132727000 },
"attempts": 0
}

A quick taste — Laravel produces, anything consumes

useBabelQueue\Facades\BabelQueue;
BabelQueue::publish('urn:babel:orders:created', ['order_id' => 1042]);
# a Python service consumes the very same message — natively@bq.handler("urn:babel:orders:created")defon_order_created(data, meta):
... # AI/ML, data processing, anything

Why teams use it

  • 🧩 Agnostic serialization — a strict JSON envelope, no serialize() lock-in.
  • 🔖 URN routing — identity (urn:babel:<context>:<event>) decoupled from class names.
  • 🔭 Built-in trace_id — follow one message across every service and language.
  • 🔌 Broker-agnostic — Redis, RabbitMQ, Amazon SQS, Azure Service Bus, Apache Pulsar, Apache Kafka & ActiveMQ/Artemis — swap by a config line.
  • 🪶 Drop-in & lightweight — reuse your framework's worker; zero heavy dependencies.

Ecosystem

Each language ships a framework-agnostic core plus thin framework adapters, so the wire format stays identical everywhere.

LanguageCoreFramework adapters + broker transportsRegistryStatus
PHPbabelqueue/php-sdkbabelqueue/laravel, babelqueue/symfony (Redis/AMQP/SQS/Pulsar/Kafka/Artemis transports in the core)Packagist✅ 1.x
Pythonbabelqueue[celery][django] + broker extras [redis][amqp][sqs][pulsar][kafka][azureservicebus][artemis]PyPI✅ 1.x
Gobabelqueue-go…/redis…/amqp…/sqs…/pulsar…/kafka…/artemis…/azureservicebus + …/asynq…/machineryGo modules✅ 1.x
Node.js@babelqueue/core@babelqueue/bullmq@babelqueue/nestjs + redisrabbitmqsqspulsarkafkaartemisazure-service-bus packagesnpm✅ 1.x
Javacom.babelqueue:babelqueue-core…:babelqueue-spring + -redis-sqs-pulsar-kafka-artemis-azureservicebusMaven Central✅ 1.x
.NETBabelQueue.CoreBabelQueue.MassTransit + .Redis.Sqs.Pulsar.Kafka.Artemis.AzureServiceBusNuGet✅ 1.x

Brokers — every SDK speaks the same envelope over each: Redis · RabbitMQ · Amazon SQS · Azure Service Bus · Apache Pulsar · Apache Kafka · ActiveMQ/Artemis. Each is locked by the cross-SDK conformance suite and proven by a live cross-language interop demo. (PHP × Azure Service Bus is the one documented deferral — every other (language × broker) cell ships.)

Get involved

Status: BabelQueue is GA (1.x) — every SDK is published with a SemVer-stable public API (breaking changes require a MAJOR, per the deprecation policy), and each produces and consumes the envelope across the seven brokers above. The wire contract is frozen at schema_version: 1.

📄 License

Open source under the MIT License © Muhammet Şafak.

Popular repositories Loading

  1. babelqueue-examples babelqueue-examplesPublic

    Runnable cross-language BabelQueue demos — a message produced in one language, consumed natively in another, over the broker you already run.

    PHP 2 1

  2. php-sdk php-sdkPublic

    Framework-agnostic PHP core for BabelQueue — the language-neutral JSON envelope codec & contract for polyglot queues. Drop the PHP serialize() lock-in.

    PHP 1

  3. laravel laravelPublic

    Drop-in Laravel queue driver for BabelQueue — dispatch polyglot jobs Go, Python, Java, .NET & Node can consume, without disturbing your existing queues.

    PHP 1

  4. symfony symfonyPublic

    Symfony Messenger adapter for BabelQueue — produce & consume language-neutral JSON envelopes Go, Python, Java, .NET & Node can read. Built on babelqueue/php-sdk.

    PHP 1

  5. babelqueue-python babelqueue-pythonPublic

    Read & write the canonical BabelQueue envelope from Python — exchange messages with Laravel, Symfony, Go, .NET & Node over one strict JSON format. Zero-dependency core.

    Python 1

  6. conformance conformancePublic

    Canonical cross-SDK conformance suite for BabelQueue — the golden schema, fixtures and manifest every SDK is tested against.

    Shell 1

Repositories

Showing 10 of 27 repositories

Top languages

Loading…

Most used topics

Loading…