all Technical posts

The Big Arcus Messaging v2.0 Release is Bigger Than its Parts

What the v2.0 brings to Arcus Messaging is the biggest collection of changes in years. Both the scope and type of changes bring an entirely new way of messaging to projects.

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.

Three changes that correct and improve message routing

Besides the big circuit breaker feature, we also have introduced three small changes with a big impact on message handling and message routing.

  • Consider faulty message handler as ‘message handled’

Previously, when a message handler was chosen by the message router to handle the message, but the message handler threw an exception, the message router incorrectly determined the message to be ‘not handled’. The responsibility of the message router stops when the message is sent to the message handler. After that, it is the job of the message handler developer to handle the message correctly.

  • The limited scope of registered message handlers

Any registered message handlers are now scoped to a single message router or message pump. This was not previously the case, as message handlers registered for one pump could be used for another. Setting the scope puts each group of registered message handlers into silos, and makes a more logical message flow.

  • Configure the operation name of the handled message request

When a message is received in the message router, the operation name of the tracked telemetry can now be set. This was previously not the case, which made tracked telemetry less useful and/or logical. Having this configuration in place provides a clearer understanding of what is being handled by the messaging system.

.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

Hi there,
how can we help?

Got a project in mind?

Connect with us

Let's talk

Let's talk

Thanks, we'll be in touch soon!

Call us

Thanks, we've sent the link to your inbox

Invalid email address

Submit

Your download should start shortly!

Stay in Touch - Subscribe to Our Newsletter

Keep up to date with industry trends, events and the latest customer stories

Invalid email address

Submit

Great you’re on the list!