Packages
x3m_system
0.9.1
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
retired
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
retired
0.7.7
0.7.6
retired
0.7.5
0.7.4
retired
0.7.3
retired
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
retired
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.1.1
0.1.0
Building blocks for distributed and/or CQRS/ES systems
Current section
Files
Jump to
Current section
Files
x3m_system
CHANGELOG.md
CHANGELOG.md
# 0.9.1
- Add set_state optional callback to Aggregate
- Add documentation.
# 0.9.0
- Breaking change in telemetry events from dispatcher and router
# 0.8.6
- Fix dialyzer error for `:ensure_local_logging?`
- Change local logging to be turned on by default
# 0.8.5
- Fix typo in raised ArgumentError if passed `:ensure_local_logging?` value is
not `boolean()`
- Refactor internal function to eliminate dialyzer error from client apps
# 0.8.4
- Bump elixir to 1.11
- Fix return types in spec for `Router.authorize/1`
- Update deps
- Clean unused deps
- Add optional `:ensure_local_logging?` config option when defining a Router to
limit each node log output to its own STDOUT
- If passed as `true` ensures log messages of called node are not shown in
caller node STDOUT
- If not passed defaults to `false`
# 0.8.3
- Logger.warn -> Logger.warning
# 0.8.2
- Add `Dispatcher.validate/1` function that will set `Message.dry_run` to `true` if it was `false`.
- Add optional `Aggregate.rollback/2` callback that is invoked if message was dry run.
- Add optional `Aggregate.commit/2` callback that is invoked if message wasn't dry run.
# 0.8.1
- Router calls `authorize/1` callback before it proceeds with service call.
BREAKING CHANGE: by default `authorize/1` returns `:forbidden`.
- Add `Dispatcher.authorized?/1`
# 0.7.20
- Dispatcher creates temp proc when invoking local service (to avoid refc binary leaks)
# 0.7.19
- No need for catch-all function when unloading aggregate on state
# 0.7.18
- Add unload aggregate on it's state (after applying events) using MessageHandler macro option:
```
use X3m.System.MessageHandler,
unload_aggregate_on: %{
state: &__MODULE__.unload_on_state/1
}
def unload_on_state(%ClientState{status: :completed}), do: :unload
def unload_on_state(%ClientState{status: :almost_completed}), do: {:in, :timer.hours(1)}
def unload_on_state(%ClientState{}), do: :skip
```
# 0.7.17
- Add unload aggregate on event using MessageHandler macro option:
```
use X3m.System.MessageHandler,
unload_aggregate_on: %{
events: %{
Event.Example => {:in, :timer.hours(1)}
}
}
```
# 0.7.16
- `execute_on_new_aggregate` returns `{:ok, -1}` if aggregate returns `:ok` response
with empty `events`
# 0.7.15
- Add `on_maybe_new_aggregate/2` in .formatter
# 0.7.14
- Add `on_maybe_new_aggregate/2` macro for MessageHandler.
# 0.7.13
- Service router doesn't remove `events` from `Message` if `dry_run` was set to `:verbose`
# 0.7.9
- Add and maintain `dispatch_attempts` in SysMsg for scheduler
# 0.7.5
- Introduce servicep/2 macro for router.
# 0.7.2
- Fix warnings in elixir 1.11
# 0.7.1
- Service router removes `request` and `events` from `Message` when sending response back to invoker.