title: CQRS, EventStore and event sourcing: concurrency exceptions in SaveEvents use RPC?
body: <p>I am implementing an event store. I have defined a SaveEventsConsumer that handles the storage of events in the event store. If I understand correctly CQRS commands should have no response. Nevertheless, there can be concurrency problems when saving events to the event store. I use RabbitMQ. Should the client be notified so it can notify the user for example? How should it be implemented? Using RPC and an error format?</p>
  
  <p>My first approach is:</p>
  
  <blockquote>
    <p>Client use RPC like style. SaveEventsConsumer notifies the client (success or failure). If an failure occurs (e.g. concurrency) return the exception to the client.</p>
  </blockquote>
  
  <p>Is this solution aligned to the CQRS pattern? Is a good approach? Is there any other approach? Is there any improvement? Should I use any AMQP header or property to indicate the error (mimicking HTTP error codes)? </p>
  
  <hr>
  
  <p>Example, in a cluster:</p>
  
  <p>Two instances of the same application modify the same aggregate. These intances should coordinate (externally to the event-store) or is the event-store which has to detect and notify the response? </p>