Releases: JamesRandall/AzureFromTheTrenches.Commanding
Custom HTTP Dispatch Error Handling
The HTTP dispatcher can now be associated with a error handling delegate on a per command basis so that HttpStatusCode errors can be translated into meaningful exceptions.
NuGet Package Bumps
- NuGet package updates and Core 2.2 targetting
- Added remove capabilites to command registry
REST API, Service Bus, Cleaner Extension API
Although this is a major version bump for most users it is likely to be zero impact. I have obsoleted some methods but they won't be removed until the next major version. Updates include:
- ASP.Net Core REST API Commanding - configuration based zero code controllers for accepting commands as REST calls
- Service Bus Extensions - dispatch commands to and process from the Azure Service Bus queues, topics and subscriptions
- Event Hub Extensions - added dispatch support
- Registration supported through Type objects as well as generics (thanks to @cjrpriest )
- Syntax for adding to the IServiceCollection is no in line with Microsoft guidelines Add rather than Use (in my defence I had adopted this convention ahead of Microsoft setting theirs!)
- Cleaner syntax for common use case of extensions (dispatch to queue for example) through extension methods and static factories negating the need for interface resolution.
- Command / handler discovery (see Discover on ICommandRegistry)
- New documentation site at https://commanding.azurefromthetrenches.com
It's worth also noting that the REST API and Service Bus extensions are at v1.0.0. The framework set is large enough that it no longer makes sense to version things as a group and I'll be splitting these things out into their own repos shortly.
Queue improvements and bug fix
- Queue extensions now support logging via the supply of Action<>'s dependency registration
- Commands with no result now log with the correct command type.
Thanks to cjrpriest for the contribution of the logging fix - great to receive my first community contribution for this framework!
Minor improvements and fixes
- When registering the cache sub-system you can now opt to have the caching command dispatcher replace the standard dispatcher
- When registering the HTTP dispatch sub-system you can supply a HttpClient instance of your own or instead the commanding runtime will create a single shared instance for its own use
- FIX: removed HttpClient creation issue
Dispatch fixes
- Fixes for dispatching commands which have no result via custom dispatchers
- Acceptance tests to cover this
This release contains a potentially breaking API change for registration - it's one of the lesser used variants but hence the major version bump.
HTTP bug fix
- Fixed an issue with GET requests over the HTTP dispatcher where query parameters were being missed (and added unit tests around this)
Minor improvements
- The commanding framework can now be be configured on a per thread basis (which has the by-product of supporting parallel running of full end to end acceptance tests in a single process space)
- 15% performance improvement
- A missing command handler now generates a MissingCommandHandlerRegistrationException exception. Thanks to @cjrpriest for reporting this
I've also begun to introduce full end to end acceptance tests.
Bug fix
Fixed an issue that caused the dispatch of commands with no expected to response to fail.
Performance Improvements
Performance of the framework has been improved 10x in this release (see blog for details).
Additional minor improvements are available through the addition of two new configuration options:
- Metric collection is now disabled by default but can be enabled by setting the MetricCollectionEnabled property to true.
- When the framework is only used with in memory scenarios UseLocallyUniqueCorrelationIds can be set to true to generate cheaper correlation IDs (incrementing long's as opposed to GUIDs).