freyr / message-broker
Standalone messaging library: transactional outbox, deduplication, per-transport producers and consumers (AMQP, Kafka, SQS) with retries, DLQ and replay
v0.4.0
2026-03-07 10:48 UTC
Requires
- php: >=8.2
- ext-curl: *
- doctrine/dbal: ^3.0|^4.0
- doctrine/orm: ^3.0
- freyr/identity: ^1.0
- freyr/message-broker-contracts: ^0.3
- nesbot/carbon: ^2.0|^3.0
- symfony/config: ^6.4|^7.0
- symfony/console: ^6.4|^7.0
- symfony/dependency-injection: ^6.4|^7.0
- symfony/doctrine-messenger: ^6.4|^7.0
- symfony/http-kernel: ^6.4|^7.0
- symfony/messenger: ^6.4|^7.0
- symfony/property-access: ^6.4|^7.0
- symfony/serializer: ^6.4|^7.0
Requires (Dev)
- ext-amqp: *
- doctrine/doctrine-bundle: ^2.0
- doctrine/doctrine-migrations-bundle: ^3.0
- php-amqplib/php-amqplib: ^3.7
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0|^12.0
- symfony/amqp-messenger: ^6.4|^7.0
- symfony/framework-bundle: ^6.4|^7.0
- symfony/phpunit-bridge: ^6.4|^7.0
- symfony/yaml: ^6.4|^7.0
- symplify/easy-coding-standard: ^13.0
Suggests
- doctrine/doctrine-migrations-bundle: Required for --migration flag in message-broker:setup-deduplication
README
Standalone PHP messaging library: transactional outbox with total per-lane ordering, consumer-side deduplication and dead-lettering with replay, and per-transport producers and consumers — AMQP first, Kafka and SQS planned. Plain PDO storage (MySQL, PostgreSQL), no framework coupling.
Status: early development. Ground-up rewrite in progress (formerly a Symfony Messenger bundle, available as
v0.xtags). No stable release yet; every API may change without notice.
Requirements
- PHP ≥ 8.4
- MySQL 8+ or PostgreSQL 13+ (PostgreSQL support in progress)
- A supported transport client, e.g.
php-amqplib/php-amqplibfor AMQP
Development
docker compose up -d --wait # MySQL, PostgreSQL, RabbitMQ make test # phpunit (functional tests against real services) make phpstan make cs-check
License
MIT