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”.
ecotone/ecotone) replaces multiple tools (e.g., RabbitMQ, Laravel Queues, custom retry logic).ecotone_messages, ecotone_saga_states). These must be versioned with Laravel migrations.#[CommandHandler], #[Saga], etc., could make code harder to grep/search.ecotone:replay-dlq).message_id).pgsql/mysql drivers must be tuned for concurrent message consumers.ecotone:consume processes can run in parallel, but saga locks may require distributed coordination (e.g., Redis for #[Saga] state).| Failure Scenario | Impact | Mitigation Strategy |
|---|---|---|
| Database Outage | Messages lost if not in outbox. | Use write-ahead logging (WAL) for DB. |
| Consumer Crash | Unprocessed messages in DLQ. | Configure automatic retries + alerts. |
| Saga Deadlock | Stuck transactions. | Set timeout limits for #[Saga] steps. |
| Schema Migration Failures | Broken message tables. | Test migrations in staging; use rollback plans. |
| High DLQ Volume | Query performance degrades. | Archive old DLQ entries; optimize indexes. |
| PHP Version Incompatibility | Package breaks on upgrade. | Pin versions in composer.json; monitor Ecotone releases. |
#[CommandHandler] vs. traditional controllers.OutboxMessage::publish()).#[Saga], #[Step]).ecotone:consume, ecotone:replay-dlq, and MCP server (for AI integration).ecotone_messages.status, ecotone_saga_states.locked_at.ecotone_messages table growth.Job classes to Ecotone handlers may require incremental testing.How can I help you explore Laravel packages today?