If your interested in doing CQRS / ES on the JVM, I highly recommend you look into
Akka-Persistence. I've worked with the framework from it's beginnings when it was known as
Eventsourced. It will handle your ES concerns quite gracefully. As for CQRS, we implemented that through design. We have separate read and write concerns running on their own JVM's that are eventually consistent via Akka Remote messaging. This configuration has been in production for a large scale distributed cloud app for about 9 months now, and has exceeded our expectations in performance and stability. It's all based on Akka, Eventsourced / Akka-Persistence, Scala, Mongo and Spray.io.
Here' is a
link to a small example that you may find useful. This example uses
Command Sourcing rather than
Event Sourcing, and for brevity sake run's on a single JVM. We intend to release an Event Sourcing example shortly. The
Employee.scala source represents the write-side while the
Benefits.scala represent the read side. In the real world your read and write concerns would run on separate JVM's and be eventually consistent via Akka remote messaging.
Cheers,