- Handle case where client clock can be ahead of server clock
- Fix injection configuration issue in the Directory.Standalone project
- Switched external dependencies to NuGet, this change is synchronized with Zebus'.
- StoragePeer deserialization is more robust to prevent a crash if the data storage is corrupt
- Switched to Cassandra CSharp driver 2.1
- The repository is split, from now on Zebus.Directory has its own repository
- The MessageContext can be injected in the constructor of a handler
- The new SubscriptionModeAttribute allows to control automatic subscriptions more explicitly
- The "HANDLE" log is now accurate for async
- Split the "HANDLE" log into "RECV" and "HANDLE", making the distinction between the time a message is received and the time it is handled by user code
- Directories don't decommission other Directories/self
- Starting multiple Buses on the same machine simultaneously could result in identical message ids
- MessageExecutionCompleted now logs the MessageId of the corresponding command
- Now using Cassandra driver 2.0.3 in Directory.Cassandra
- Now using libZmq 4.0.4 and providing the matching pdbs in the Zebus repository
- The Cassandra backed Directory server is fully operational
- The tree-backed local Directory cache is now fully operational (routing performance improvement, faster routing rules updates, smaller memory footprint, etc.)
- Dynamic subscriptions for outgoing messages can be disabled on the Cassandra Directory implementation to handle massive dynamic subscriptions (not recommended)
- The SocketConnected/SocketDisconnected feature was removed (it was largely undocumented / unused, so it made to a minor)
- The local Directory cache doesn't lose subscriptions when a Peer is decommissioned
- Reduced the Directory cache memory footprint
- Fixed a bug in the Directory cache that prevented multiple Peers from receiving the same messages
- Messages received from the Directory during the Registration procedure could be lost
- The Directory server now deletes existing dynamic subscriptions when a Peer registers
- The Directory server now handles PeerSubscriptionsForTypesUpdated with "null" BindingKeys
- The local Directory cache now handles the new dynamic subscriptions. We will release a 1.1 after thorough testing / benchmarking.
- The incremental subscriptions support was revamped to work on a MessageType level instead of subscription level (it couldn't handle the required load).
- The Directory server Cassandra implementation was modified to support the new dynamic subscriptions efficiently.
- All packages are now supporting SymbolSource.
- CustomDelegatedProcessingFailed was removed (it should never have been in the public API).
- The Cassandra Directory server implementation was ignoring some updates because the DateTime.Kind was not set and some timestamps where erroneously converted to Utc.
- Added some logging in the Directory events to ease debugging
- Added support for incremental subscription updates in the client Directory cache using a tree structure that allows to keep throughput stable with huge volumes of routings.
- Added a Cassandra implementation of the Directory server repository (WIP, not production ready yet)
- Added SymbolSource support, you can now browse sources and debug from Visual Studio.
- IMultiEventHandler is replaced by Bus.Subscribe(Subscription[], Action) (Should have been in a major release since it is a Core breaking change, but given that it was not even documented we just changed it in a patch release).
- The project is now built/tested on AppVeyor
- When creating two identical dynamic subscriptions, disposing one does not dispose the other anymore.
- Embedding libZmq in the Zebus DLL so it is packaged in the Nuget
- All core features (Including Events, Commands, Dynamic subscriptions, etc.)
- In-memory Directory for testing purposes, but should NOT be used in production