Releases: ContextCore/GridDomain
Reimagined GridDomain
a new version of GridDomain, much simpler and easier to use
Messages metadata
Messages metadata
Messages used for aggregates \ sagas \ custom handlers communication now are enveloped with metadata
containing correlation id, casuation id and procesing history for better debuggin and tracing.
All event produced by command, even produced by sagas raised, can be tracked by command correlation id.
details
Event adapters merge
Event adapters for whole messages and only for nested objects are registered in one place - GridNode.EventAdaptersCatalog before Node start.
Customizable pools for actor routing
When creating a route for messages, it is possible to choose a pool - non, random, consistent hashing
No pool for aggregates and sagas
Sagas and Aggregates persistence hubs no longer use a consistenet hashing pool due to a lot of side-effects.
Now only one hub per aggregate \ saga type is existed and passes messages to its children.
Snapshots customiazation
Snapshots payload can be customized by aggregate producing custom implementation of IMemento
and IConstructAggregates creating aggregates from IMemento instance.
Added policy to delete snapshots
Snapshots & simplified scheduler
GridDomain release 1.9.0 bring two main possibilities:
Snapshots
Aggregates, instance and state sagas can be snapshotted to increase performance.
Functionaliry is disabled by default, you can enable it with additional parameters for container configuration.
Check you aggregates\sagas are serializable before enabling snapshotting.
Read details in wiki
Simplified scheduler
Scheduler is no more using special sagas subscribed for all messages.
Now it uses command waiting, reducing memory\CPU consumption and DB space.
#24
Additions:
Configurable timeout for persistence journal
Persistence journal supports new parameter - timeout, because connection timeout is not applicable in some cases. New property was added to IDbConfiguration.
Compatibility with legacy wire serializers
Cumulative update to support already existing domain events serialized with Wire 0.0.6 - 0.8.1 with different options.
Command execution with async/await
Command execution perfomed by async/await all the way to better ASP.Net support
Release 1.8.1 messages waiter
Added better way to wait for some messages from GridDomain internal bus.
Now we can filter messages by local predicates and easily access received messages.
Old functionality based on ExpectedMessage and CommandPlan is deprecated.
More details in wiki
Release 1.8.0
Breaking change: new serializer
Serializer and storage format for domain events and snapshot was changed from Wire 0.0.6 to Json.
All existing persisted events will be automatically converted to new format.
As latest wire 0.8.1 used in Akka is not backward-compatible with Wire 0.0.6 used in GridDomain, Wire 0.0.6
is stored as binary library in code and used to deserialize events if Json fails.
Upgrade to latest Akka 1.1.2
It includes Akka.Persistence.Sql.Common 1.1.2 and new Journal table schema. Remember to manually apply migration script
Human-readable persisted events view
At last we can view domain event by own eye. Create HumanJournal view as
create View HumanJournal AS
SELECT [PersistenceId]
,[SequenceNr]
,dbo.NetFxUtcTicksToDateTime ([Timestamp]) Time
,[IsDeleted]
,[Manifest]
,CONVERT(NVARCHAR(max), [Payload], 0) Payload
,[Tags]
FROM [dbo].[Journal]
It will show you raw json strings for persisted domain events and snapshots
New domain events adapter for nested objects
Now we can update domain events by parts, e.g. converting only a nested object, shared between many domain events without need to create each event new version. More details at wiki
Release 1.7.2
New functionality:
saga faults on errors
If saga raises an exception during transition, it will be logged will Error level and publish IFault message, where T is type of message cased bad transition. All commands issued or events emitted before exception will be processed in regular manner.
https://github.com/solomoto-dev/GridDomain/wiki/Sagas#errors-handling
Improvement for scheduler:
Job is not deleted if scheduling saga creation falls.
Monitoring & huge packages update
Upgraded almost all nuget dependencies, added monitoring by AppInsights and perfromance counters.
Updated NUnit to version 3.x
Domain event adapters
Instance sagas state persistence
- Converted ISagaState interface to ISagaState, now state is stored as a string
- fixed bug with InstanceSagas did not persist in DB due to interface member in state (State and Event from Automatonymous)
- unified test domain events and commands for instance and state sagas
- added IAggregate debug extenstions to GridDomain.Test.Framework
Cumulative fix for
#25
#21
#19
Nuget packages can be found here