Me and my team currently work on the read side of a CQRS and event-sourcing system. We want our projectors to be able to listen to only a subset of all events and we want our projectors to be idempotent since an event can be published many times. Here is our current architecture:
Since a projectionist doesn't handle all events how it can know if an event hasn't been received in the correct order or if an event has already been received? We can't use the sequence number because the sequence number is related to a stream and not an event type.
The terms "projectionist", "projection ledger" and "projector" comes from this article.