- Error codes of locally handled commands are returned properly
- Empty subscription updates are not sent to the Directory
- A client using this version needs its Directory server to be at least in 1.1 for dynamic subscriptions to work properly
- Subscription updates are made by message type instead of as a big atomic change to improve subscriptions performance
Republished the NuGet because the version number was not incremented in 1.2.12
- Pulled the new
MessageDispatcher
filter feature up toIMessageDispatcher
- Fixed NuGet dependencies
- The inbound port is no longer sticky, since the feature was not relevant anymore (we are no longer relying on ZMQ's buffers)
- The
MessageDispatcher
can be provided with a message type filter
- Scanning ".exe" files for handlers as well as ".dlls" at startup
- The
TestBus
now publishes aPeerStopped
event when unregistering
MessageId
can now be paused at a given date- Added new "Handling" methods to the
TestBus
- Fix the Period setter on
PeriodicActionHostInitializer
- Added
PeriodicActionHostInitializer
/HostInitializerHelper
to provide an easy way to run code Before/After the Bus is Starting/Stopping and at given intervals. DomainException
s can now be thrown using an Enum, and the error message can be retrieved by the sender using Description attributes on the Enum.
- Transient Infrastructure Commands now ignore the "IsResponding" state of the target Peer, as they should (Some Commands like
PingCommand
should be sent no matter what)
- Deserialization errors now produce a
MessageProcessingFailed
instead of aCustomProcessingFailed
since it makes more sense to handle it like a conventional handler error - NuGet dependencies updated
- The handler being run while the Bus shutdown is initiated could not send messages because the Bus was signaled as "Stopped" too early
- Added
Abc.Zebus.Persistence.Tests
to the InternalsVisibleTo list to prepare the release of the Persistence
- Zebus.Testing: The default object comparer now ignores static fields/properties
- Added
Abc.Zebus.Persistence
to the InternalsVisibleTo list to prepare the release of the Persistence
- Sending a message with a
null
Routing Key now throws an explicit exception (instead ofNullReferenceException
)
Abc.Zebus.Lotus.CustomProcessingFailed
is now mutable, allowing users to pool it
- The Pipes move from
Scan\Pipes
toDispatch\Pipes
(theoretically a breaking change, but the API is quite internal) - Removed
RoutingType
since it wasn't used - The Bus will now throw if you try to use it before it is started
- Moq, ProtoBuf-Net, AutoFixture, Json.Net, NUnit and CompareNetObjects are now referenced as NuGets
- The new
MarkPeerAsRespondingCommand
/MarkPeerAsNotRespondingCommand
commands allow to mark a Peer as (not) responding (NOT a standard operation, use with care)
- The Persistence is now acked when a message cannot be deserialized, to prevent the Persistence from sending it over and over
- A race condition could prevent the Bus from starting properly
- When sending a transient command,
Send()
will throw if the target Peer is not responding
- A message that cannot be deserialized is now dumped on disk
- IProvideQueueLength now exposes a
Purge()
method, that is called when the queue length provider exceeds queue thresholds
- Fixed thread-safety issue in MessageDispatch.SetHandled
- log4net is now referenced as a NuGet package
- 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