How Ecotone works under the hood
This is a place, where all messaging concepts are registered. Messaging System Configuration is responsible for exposing an API for registering lower level messaging concepts, like Message Channels or Message Handlers. This is the only place, where all configuration is gathered together in order to prepare Configured Messaging System. After setting up configuration, this config can then be cached and reused between requests. This is one of the powers of Ecotone, as once the configuration is set up, then all we do is to execute it.
When configuration is prepared, we can then build Configured Messaging System from it:
The result of the built is
This is actually an API that you work with on daily basics when using Ecotone. We can get
Command/Query/Event buses(which are actually messaging gateways) from here, execute
So we know that the heart of Ecotone is
Messaging Configuration, what is this built from actually? Who registers Gateways, Message Handlers, Channels? And the answer are
Modulesare layer which transforms User land code to Ecotone's configuration.
In most of the cases they look for code that is annotated with given Attribute, to register Messaging Concepts. This way Ecotone joins messaging world with user land world and provides easy to work with API on the high level, using powerful messaging concepts under the hood.
So what happens when we execute gateway like Command Bus? It goes through
Ecotone\Messaging\MessageChannel), where at the end of each channel there is specific
Ecotone\Messaging\MessageHandler) implementation. You can imagine
veins, that pass
So each of the Handlers after receiving message performs an action and may provide reply message. If given Handler has output channel defined, it will go to the next channel. This happens till the moment there is no output channel defined and then flows stop.