Skip to content

Latest commit

 

History

History
248 lines (206 loc) · 10.6 KB

RELEASE_NOTES.md

File metadata and controls

248 lines (206 loc) · 10.6 KB

3.0.0

  • Breaking changes
    • Moved contract types to Abc.Zebus.Contracts
    • Updated dependencies: StructureMap and protobuf-net
    • Removed ABC.ServiceBus.Contracts namespace
    • Removed Abc.Zebus.EventSourcing namespace
  • Features
    • Target changed to netstandard2.0
    • Updated ZMQ to v4.2.5
    • PeriodicActionHostInitializer now uses a timer instead of a thread
    • Changed the way native libraries are delivered
  • Code cleanup
    • Merged directory and persistence repositories
    • Updated projects to the SDK format

2.2.0

  • Features
    • Updated Newtonsoft.Json, protobuf-net and log4net dependencies

2.1.2

  • Features
    • Reduce heap allocations in the receiving code path

2.1.1

  • Features
    • Improve performance when message logging is disabled

2.1.0

  • Features
    • Inject an error reporter in various zmq outbound socket operations
    • Allow local message dispatch when the bus is stopping
  • Bug fixes
    • Ensure all replayed messages are acked to the persistence
    • Support unserializable messages in dispatch error handling
  • Code cleanup
    • Migrate to VS2017 project file

2.0.0

This version introduces a major breaking change: a dedicated TransportMessage is now used to forward messages to the persistence service, instead of sending a PersistMessageCommand. An updated persistence service is still able to process commands sent by old peers, but an old persistence service is not be able to process the new TransportMessage. Thus the persistence service must be updated first.

  • Features
    • Support batch message processing with IBatchMessageHandler
    • Execute the initial segment of async handlers on the dispatch queue
    • Use a synchronization context to queue up async continuations
  • Performances
    • Improve TransportMessage serialization performance (200x for reads, 3x for writes)
    • Make MessageTypeId a value type with cached members
    • Reduce serializations (#62)
  • Code cleanup
    • Make OriginatorInfo.SenderMachineName internal
    • Use cake for build scripts

1.5.1

  • Features
    • Make error publication optional with IBusConfiguration.IsErrorPublicationEnabled
  • Code cleanup
    • Use Task.Run to invoke command completion tasks instead of custom TaskScheduler

1.5.0

  • Bug fixes
    • Use a circuit-breaker to reduce unresolvable peer performance impact
  • Code cleanup
    • Make internal a few testing types that were not intented to be available outside Zebus

1.3.1

  • Bug fixes
    • Error codes of locally handled commands are returned properly
    • Empty subscription updates are not sent to the Directory

1.3.0

A client using this version needs its Directory server to be at least in 1.1 for dynamic subscriptions to work properly

  • Features
    • Subscription updates are made by message type instead of as a big atomic change to improve subscriptions performance

1.2.13

Republished the NuGet because the version number was not incremented in 1.2.12

1.2.12

  • Bug fixes
    • Pulled the new MessageDispatcher filter feature up to IMessageDispatcher

1.2.11

  • Bug fixes
    • Fixed NuGet dependencies

1.2.10

  • Features
    • 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

1.2.9

  • Features
    • Scanning ".exe" files for handlers as well as ".dlls" at startup
  • Bug fixes
    • The TestBus now publishes a PeerStopped event when unregistering

1.2.8

  • Features
    • MessageId can now be paused at a given date
    • Added new "Handling" methods to the TestBus

1.2.7

  • Bug fixes
    • Fix the Period setter on PeriodicActionHostInitializer

1.2.6

  • Features
    • Added PeriodicActionHostInitializer / HostInitializerHelper to provide an easy way to run code Before/After the Bus is Starting/Stopping and at given intervals.
    • DomainExceptions can now be thrown using an Enum, and the error message can be retrieved by the sender using Description attributes on the Enum.

1.2.5

  • Bug fixes
    • 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)

1.2.4

  • Features
    • Deserialization errors now produce a MessageProcessingFailed instead of a CustomProcessingFailed since it makes more sense to handle it like a conventional handler error
    • NuGet dependencies updated
  • Bug fixes
    • The handler being run while the Bus shutdown is initiated could not send messages because the Bus was signaled as "Stopped" too early

1.2.3

  • Features
    • Added Abc.Zebus.Persistence.Tests to the InternalsVisibleTo list to prepare the release of the Persistence

1.2.2

  • Features
    • 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
  • Bug fixes
    • Sending a message with a null Routing Key now throws an explicit exception (instead of NullReferenceException)

1.2.1

  • Features
    • Abc.Zebus.Lotus.CustomProcessingFailed is now mutable, allowing users to pool it

1.2.0

  • Features
    • The Pipes move from Scan\Pipes to Dispatch\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)
  • Bug fixes
    • 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

1.1.8

  • Features
    • When sending a transient command, Send() will throw if the target Peer is not responding

1.1.7

  • Features
    • 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
  • Bug fixes
    • Fixed thread-safety issue in MessageDispatch.SetHandled

1.1.6

  • Features
    • log4net is now referenced as a NuGet package

1.1.5

  • Features
    • 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
  • Bug fixes
    • The "HANDLE" log is now accurate for async

1.1.4

  • Features
    • 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
  • Bug fixes
    • Directories don't decommission other Directories/self
    • Starting multiple Buses on the same machine simultaneously could result in identical message ids

1.1.3

  • Features
    • MessageExecutionCompleted now logs the MessageId of the corresponding command

1.1.2

  • Features
    • Now using Cassandra driver 2.0.3 in Directory.Cassandra

1.1.1

  • Features
    • Now using libZmq 4.0.4 and providing the matching pdbs in the Zebus repository

1.1.0

  • Features
    • 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.)
  • Bug fixes
    • 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

1.0.10

  • Features
    • The local Directory cache now handles the new dynamic subscriptions. We will release a 1.1 after thorough testing / benchmarking.

1.0.9

  • Features
    • 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.

1.0.8

  • Features
    • CustomDelegatedProcessingFailed was removed (it should never have been in the public API).

1.0.7

  • Bug fixes
    • The Cassandra Directory server implementation was ignoring some updates because the DateTime.Kind was not set and some timestamps where erroneously converted to Utc.

1.0.6

  • Bug fixes
    • Added some logging in the Directory events to ease debugging

1.0.5

  • Features
    • 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)

1.0.4

  • Features
    • Added SymbolSource support, you can now browse sources and debug from Visual Studio.

1.0.3

  • Features
    • 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
  • Bug fixes
    • When creating two identical dynamic subscriptions, disposing one does not dispose the other anymore.

1.0.2

  • Bug fixes
    • Embedding libZmq in the Zebus DLL so it is packaged in the Nuget

1.0.1