Skip to content

Commit

Permalink
chore(service-bus): deprecate service-bus encoding message-context ex…
Browse files Browse the repository at this point in the history
…tension (#490)
  • Loading branch information
stijnmoreels authored Feb 18, 2025
1 parent 8601c03 commit 425788d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,7 @@ private async Task<MessageProcessingResult> TryRouteMessageWithPotentialFallback
return MessageProcessingResult.Failure(message.MessageId, CannotFindMatchedHandler, "Failed to process message in the message pump as no message handler is registered in the dependency container");
}

Encoding encoding = messageContext.GetMessageEncodingProperty(Logger);
string messageBody = encoding.GetString(message.Body.ToArray());
string messageBody = LoadMessageBody(message, messageContext);
bool hasGoneThroughMessageHandler = false;

foreach (MessageHandler messageHandler in messageHandlers)
Expand Down Expand Up @@ -335,6 +334,32 @@ private async Task<MessageProcessingResult> TryRouteMessageWithPotentialFallback
}
}

private static string LoadMessageBody(ServiceBusReceivedMessage message, AzureServiceBusMessageContext context)
{
Encoding encoding = DetermineEncoding();
string messageBody = encoding.GetString(message.Body.ToArray());

return messageBody;

Encoding DetermineEncoding()
{
Encoding fallbackEncoding = Encoding.UTF8;

if (context.Properties.TryGetValue(PropertyNames.Encoding, out object encodingNameObj)
&& encodingNameObj is string encodingName
&& !string.IsNullOrWhiteSpace(encodingName))
{
EncodingInfo foundEncoding =
Encoding.GetEncodings()
.FirstOrDefault(e => e.Name.Equals(encodingName, StringComparison.OrdinalIgnoreCase));

return foundEncoding?.GetEncoding() ?? fallbackEncoding;
}

return fallbackEncoding;
}
}

private async Task DeadLetterMessageNoHandlerRegisteredAsync(ServiceBusReceiver messageReceiver, ServiceBusReceivedMessage message, AzureServiceBusMessageContext messageContext)
{
if (messageReceiver != null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public static class MessageContextExtensions
/// Gets the encoding property value in the messaging context, using UTF-8 as default if no such encoding value can be retrieved.
/// </summary>
/// <param name="messageContext">The context of the message.</param>
[Obsolete("Will be removed in v3.0, please use the " + nameof(PropertyNames.Encoding) + " to extract the encoding yourself from the message context")]
public static Encoding GetMessageEncodingProperty(this MessageContext messageContext)
{
Encoding encoding = GetMessageEncodingProperty(messageContext, NullLogger.Instance);
Expand All @@ -28,6 +29,7 @@ public static Encoding GetMessageEncodingProperty(this MessageContext messageCon
/// </summary>
/// <param name="messageContext">The context of the message.</param>
/// <param name="logger"></param>
[Obsolete("Will be removed in v3.0, please use the " + nameof(PropertyNames.Encoding) + " to extract the encoding yourself from the message context")]
public static Encoding GetMessageEncodingProperty(this MessageContext messageContext, ILogger logger)
{
if (messageContext is null)
Expand Down

0 comments on commit 425788d

Please sign in to comment.