How to use EventStore for communication between aggregates?

I am trying to evaluate GES for implementing CQRS with Eventsourcing.

For Read Side subscription of the events, I am using catchup subscription with checkpoints being managed in the persistence on the Readside, as indicated in the following documentation.

https://eventstore.org/docs/introduction/4.0.0/competing-consumers/

https://groups.google.com/forum/#!topic/event-store/2p_StvzAhSg

However, for the Write side when there are aggregates that need to subscribe to the events that happen in other aggregate, is there a recommended approach to be taken with/without GES for overall architecture?

Can you please clarify what you mean by ‘aggregates that need to subscribe to other events?’ Normally what you would do is use a stateless event handler that listens to an event, which then sends a command to another command handler. One way to achieve this is by writing these commands to stream; then your regular GES subscriptions takes over.

https://github.com/yreynhout/Reactol/tree/master/src/Reactol might give you some ideas.

Aggregate1 upon execution of some behavior would have an event added to it’s stream.
Aggregate2 needs to be updated for the event that happened in Aggregate1.

Typically a subscription needs to be setup for this which then calls onto the behavior on Aggregate2.

I think the solution you are describing fits (I would not put commands in the eventstream, I would let the subscription call behavior onto Aggregate2).

However I wanted to know what kind of subscription needs to be setup for the event handler that you are describing.

My assumption is that retries are required here and thus the persistent subscription is more suitable, but wanted to confirm.