Elixir CQRS/ES Commanded
What’s in the latest releases?
- Migrate from Poison to Jason for JSON serialization.
- Support for latest Postgrex (v0.14) and Ecto (v3) libraries.
- Migrate from
- Allow event handlers to subscribe to individual streams (#203).
- Process manager and event handler error & exception handling (#192).
- Support for
:any_versionwhen appending events directly to the Commanded event store (#127).
Commanded.EventStorebehaviour defines a
child_spec/0function to allow an event store adapter to start its own supervision tree. You no longer need to manually start the in-memory event store (e.g. in tests).
- EventStore has added support for subscription concurrency (#134).
The most significant change is the migration from Poison to Jason for JSON serialization. This change was driven by the upgrade to Postgrex v0.14.x and to support Ecto v3. Jason is also now the default JSON serializer used by Phoenix (since v1.4).
This is a breaking change. Refer to the CHANGELOG for details.
Commanded’s future & the road to v1.0
The roadmap for v1 is to keep the API mostly fixed, but add performance improvements, such as allowing event handlers to run concurrently. EventStore’s latest release added support for subscription concurrency to support this feature in Commanded.
- Event handler concurrency (#184)
- Event sourced process managers (#137)
- Make global
$allstream building a separate task (#139). Will provide a significant performance improvement for appending events to a stream.
What’s the plan for the future?
Once Commanded v1.0 is feature complete and released, the next step is to tackle the desire to allow multiple Commanded apps to run within a single Elixir application. The approach will likely be similar to Ecto’s Repo module and will thus be a breaking change to be released as Commanded v2.0.
- Concurrent, Isolated commanded apps (#117)
Can you help support Commanded?
I’d love to dedicate more time to improving Commanded and provide you with more support.
You can help out by:
- Submitting feature requests, tracking bugs, and highlighting where documentation is lacking (submit an issue).
- Pull requests are gladly accepted.
- Write about your experience using Commanded and how you’ve implemented event sourcing in your own application.
- Sponsor development or features (get in touch).
Need help with Commanded?
I can provide support, training, and consultancy for your company to become event-driven and succeed when building Elixir applications using CQRS and event sourcing.
Please get in touch if I can help you out.