I’m building an architecture where there is a flow of messages in input and output with the need to log and monitor any failure… I wonder if I can just set one or more Event Store instances (nodes?) and use them not only for Event Sourcing but also to notify any interested component for events or I need another library to dispatch events to and from the components…
At the moment I’m mixing a “Service bus” library with Event Store.
Is it correct or maybe I can reduce the infrastructure overhead refactoring the architecture and use separate Event Store instances?
Do you use other message oriented libraries to manage the flow between components and then do you rely on ES only to store events (with all the benefits of rebuilding your aggregates state and provide special projections for your read models)?
In other words, can I have the same features offered by other bus libraries like… centralized queue (stream with es I guess) for errors, automatic error logging features in case of failure, guarantee delivery (at least once), idem-potency and de-duplication using just Event Store?
Or I don’t have to bother myself with all this because the magic of storing transitions instead of current states it give me all of that on top of one central Event Store?