Eventstore’s competing consumer pattern is implemented through the use of persistent subscriptions. Competing consumers is a great pattern to use when you need multiple consumers pulling from a single stream with the state of the stream being managed by EventStore. In order for the consumer to keep receiving messages they must ack/nack the message they received in some way. The happy path would lead to the consumer being able to process the message and returning an ack back to signify that the message was processed. If a consumer is unable to process the message, there are multiple options that can be taken, likely ending in the message being parked. Each subscription group created will have another stream available known as the parked message queue. Messages which are not acknowledged can be put into this queue for diagnosis later. Through EventStore’s web ui, you can easily click the replay parked messages link for a particular subscription group. If there is a need to programmatically replay this queue it can be done through the REST API.
Here is an example on how to programmatically invoke the replay parked messages functionality.