ecotone/dbal
Ecotone Doctrine DBAL integration: use your relational database for durable async message transport, outbox, dead letter queue, saga state storage, and JSON document store. Provides transactional message handling and declarative DBAL query “business methods”.
Event-Driven Architecture (EDA) Adoption: Enables transactional messaging, outbox pattern, and dead-letter queues (DLQ) without external infrastructure (e.g., Kafka, RabbitMQ). Ideal for Laravel teams prioritizing resilience, auditability, and scalability while leveraging existing databases.
Build vs. Buy Decision: Buy for teams needing atomic event publishing, reliable async processing, or saga workflows without reinventing the wheel. Avoids complexity of self-built solutions or vendor lock-in with proprietary tools like AWS SQS or Azure Service Bus.
Roadmap for Scalability: Supports distributed messaging and event sourcing for microservices or monolithic Laravel apps, reducing coupling while maintaining database-backed durability. Enables gradual migration to CQRS or DDD without full rewrites.
Key Use Cases:
Adopt if:
Look elsewhere if:
For Executives: "Ecotone DBAL lets us replace unreliable queues or manual retries with a database-backed messaging system—no extra infrastructure, no lost events, and full auditability. For example, when a user places an order, we can atomically publish events to update inventory and notify the warehouse, even if the system crashes. This reduces operational risk, cuts down on debugging time, and enables future scalability without costly infrastructure changes. The cost? Minimal—we’re leveraging our existing PostgreSQL and a single PHP package. The ROI comes from fewer outages, cleaner event-driven flows, and easier compliance audits via the dead-letter queue and document store."
For Engineers: *"This is Doctrine DBAL for messaging, but with superpowers. Here’s why it’s a game-changer for Laravel:
Tradeoffs: Slightly higher DB load (but negligible for most apps), and a learning curve if your team isn’t familiar with DBAL or attributes. If you’re already using Doctrine or need reliable async workflows, this is a no-brainer over self-built solutions or external brokers."*
For Product Managers: *"This package lets us de-risk async workflows by ensuring events are never lost due to crashes or network issues. For features like:
How can I help you explore Laravel packages today?