Asynchronous Message Bus (Gateways)
Last updated
Last updated
We may extend Gateways functionality with asynchronocity. This way we can pass any Message via given Message Channel first.
Asynchronous Gateways are available as part of Ecotone Enterprise.
To make Gateway Asynchronous we will use Asynchronous Attribute, just like with Asynchronous Message Handlers. We may can extend any types of Gateways: Command/Event/Query Buses, or custom .
To build for example a CommandBus which will send Messages over async channel, we will simply , and add our method.
then we all Commands that will be triggered via AsynchronousCommandBus will go over async channel.
It's enough to extend given CommandBus with custom interface to register new abstraction in Gateway in Dependency Container.
Having asynchronous CommandBus is especially useful, if given Message Handler is not meant be executed asynchronous by default.
then when using standard CommandBus above Command Handler will be executed synchronous, when using AsynchronousCommandBus it will be done asynchronously.
and then register dbal channel
Then whenever we will send Events within Command Handler (which is wrapped in transaction by default while using Dbal Module). Messages will be commited as part of same transaction.
It's easy to build an Outbox pattern using this Asynchronous Gateways. Just make use of to push Messages over Database Channel.