Perhaps it would help if I use the canonical example of a bank transfer.
On the 1st of every month I pay a direct debit of £100 to my utility company. An event is published to the EventStore indicating this.
On the 1st of February the following event was published:
Destination Acct No: 123
Source Acct No: 234
Amount: £100
All fine.
On the 1st of March while the bank was executing my direct debit their system crashed. The transfer was effected and an event was published to the EventStore just before the system went down. When the system comes back up it republishes the same event to EventStore.
So, on the 1st of March two events were published:
Destination Acct No: 123
Source Acct No: 234
Amount: £100
and (again)
Destination Acct No: 123
Source Acct No: 234
Amount: £100
So, I guess my question is: what is the recommended way of ensuring that the events published on the 1st of March are treated idempotently i.e. the retry is effectively ignored by EventStore?