Determine usability in Messaging #470
Replies: 4 comments 3 replies
-
Why would we remove .NET Standard ? I think the package is more lightweight by targetting .NET standard rather than targetting a specific version of .NET ? .edit: Ok, I've read this article: https://learn.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-1-0#net-5-and-net-standard I'm also wondering if we should really drop support for EventHubs. As far as I know, we only need the message-pump that is specific for EventHubs to support EventHubs; all other components are just reused ? On Observability: I would only remove Observability once we have full support for Open Telemetry. |
Beta Was this translation helpful? Give feedback.
-
The main advantage of Arcus.Messaging is that it abstracts the boilerplate code that is required to retrieve messages from the bus from the developer. Since Azure Function ServiceBus bindings already provide this abstraction (in another way), I agree with removing Azure Functions support from Arcus.Messaging. Moreover, some functionality -like the messagepump circuitbreaker- is not supported in the Azure-Functions version of Arcus.Messaging I believe. |
Beta Was this translation helpful? Give feedback.
-
To move the observability/service-to-service functionality outside the abstractions, some considerations need to be discussed. The concrete implementations (current with Serilog, new with OpenTelemetry) will need to have access to the following information:
The following proposal should be able to handle both concrete implementations:
Both Serilog and OpenTelemetry will need to create an implementation of an interface that takes in the above described information and returns a |
Beta Was this translation helpful? Give feedback.
-
Q: What to do with the Q: Should we move the circuit breaker functionlity solely to the Azure Service bus message pump, as not all message pumps could handle circuit breakers anyway (like EventHubs). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Since the repository is rather inactive, the following area's of the codebase become deprecated. If this state continues, they should be removed to make Messaging more lightweight and easier to maintain.
❌ Arcus.Security is being used to retrieve connection strings when authenticating message pumps;
IConfiguration
overload.ISecretProvider
, which is the point-of-contact for the secret store.❌ .NET Standard 2.1 and .NET 6 are still being added for backwards compatibility reasons. This means harder and 'split' package management when using in combination with .NET 8.
Observability
string
as incoming message; hence the general messaging routing that supported this. If we decide to remove any Azure Functions-related code, we can also remove the general messaging withstring
.➡️ We will migrate to using OpenTelemetry in the future, plus we should stop supporting Azure Functions directly to lower the maintainence cost.
❓ Do we take this opportiunity to also remove the old/deprecated Hierachical correlation support?
As a proposal, it would be good that the 'core' messaging functionality is independent of any telemetry system, and that either Serilog/Arcus.Observability or OpenTelemetry can be plugged in. To do that, we should:
MessageCorrelationInfoEnricher
in the 'core' messaging, as this is solely being used for Serilog;❌ EventHubs has it's own 4 libraries to support similar functionlity like Service bus, but it sheldom being used this way and brings with it a big maintainence cost.
❌ General message routing and handling: it was previously made to be as an abstraction for other messaging solutions, but it is become rather tedious to introduce pump-specific features this way. And since people mostly will not implement their own messaging solution this way, it is best to deprecate it instead of endlessly maintain it.
MessageContext
,IMessageRouter
, andIFallbackMessageHandler
withstring
/MessageContext
.MessageRouter
could become a 'template class' which exposes the functionality commonly needed for message routing, without being a router by itself.IMessageRouter
interface will become deprecated, as it only was using thestring
as message (which is commonly used for Azure Functions, but not for Azure Service bus message pumps);IFallbackMessageHander
withstring
/MessageContext
will become deprecated as it is only usingstring
as message (which is commonly used for Azure Functions, but not for Azure Service bus message pumps).MessageContext
can become a 'template class' which can act as a common way of providing context to message handlers, without being a context by itself (since the general message routing is being removed).Beta Was this translation helpful? Give feedback.
All reactions