Orchestrators with routing-slip semantics, Sagas as stateful coordinators, Distributed Bus + Service Map between PHP services, EIP primitives as attributes, multi-tenant header-routed channels — one declarative orchestration model.
Composer package · Laravel or Symfony · PostgreSQL or MySQL · RabbitMQ, Kafka, SQS, Redis, or DBAL outbox
Stateful long-running processes with compensation. Handler-chaining workflows for stateless pipelines. Saga timeouts in one #[Delayed] attribute. All declarative, all attribute-driven.
Crash-resistant multi-step processes on your existing database and broker. Sagas, orchestrators, chained workflows, outbox, and #[Delayed] timeouts — plain PHP attributes, no separate workflow service, no replay-deterministic DSL.
Aggregate publishes event. Saga subscribes by attribute. Projection subscribes by attribute. Async handler subscribes by attribute. The attribute is the wiring.
Pipe handlers together. Route by payload or headers. Split one message into many. Filter, enrich, transform — all as attributes, no glue code.
Tenant-isolated event streams, tenant-routed message channels, priority routing by customer status. Multi-tenancy as a topology property, not a WHERE clause.
Rename classes, move handlers, refactor namespaces — messages still route correctly. The endpoint ID is the contract; FQCN is not on the wire.
Each row names what you'd need to add to match Ecotone, and the architectural ceiling that integration cannot fix.
Workflow code runs in Temporal's runtime, not yours. Cluster + RoadRunner.
Workflow logic, not surrounding orchestration. Laravel-only.
A transport-level bus. No EIP, no distributed bus, no multi-tenant API.
Process orchestration, service orchestration, and message routing on one model.
Haven’t found what you’re looking for? Contact us
Unleash the power of Messaging in PHP
and push productivity to the higher level
