When downstream is unable to keep up
The registered message handlers are often interacting with an external system. This dependency system can not always follow the speed in which message are received and processed. If the system gets overwhelmed, the previous Arcus Messaging functionality didn’t take this into account.
Starting from v2.0, we introduce circuit breaker functionality that controls the message pump from your custom message handler. By injecting the IMessagePumpCircuitBreaker
, any custom-implemented message handler is now in control of pausing the pump. By determining the health state of the dependency system, the message handler can see whether or not the pump should be paused (ex. receiving HTTP 503 Unavailable
).
After the initial pause, several single messages will be retried until the dependency system is back up. Any option of how long the pump should be paused or the length of the retry interval between retries is configurable when calling overloads from the Pause...
method.
See the feature documentation for more information on this functionality.
.NET 8 support
This major release also brings .NET 8 to the messaging library. It steps away from .NET Core, but still supports .NET 6 and .NET Standard 2.1. Just as with the Web API update, the messaging update introduces Arcus and .NET 8 to client projects. The next step will be to update the project templates so that any new project is kickstarted with .NET 8.
Conclusion
This post only touches the very surface of what the v2.0 provides. A lot of additional features and changes are included in this major release. We no longer use automatic Azure Service Bus topic subscription creation/deletion by default: we added Managed Identity support to EventHubs message pumps, included the Service Bus type in the request tracking, and much more.
Have a look at our release notes and official documentation for more information on this new release.
If you have any questions, remarks, or comments, or want to discuss something with us, feel free to contact the Arcus team at Codit. Thanks for reading!
The Arcus team
Subscribe to our RSS feed