Skip to content

Commit

Permalink
add encoding check for different strategy at storage queue option
Browse files Browse the repository at this point in the history
  • Loading branch information
nytian committed Aug 12, 2024
1 parent a92d9b6 commit a65f556
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/DurableTask.AzureStorage/StorageServiceClientProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ namespace DurableTask.AzureStorage
{
using System;
using System.Globalization;
using System.Text;
using Azure.Core;
using Azure.Data.Tables;
using Azure.Storage.Blobs;
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;

/// <summary>
/// Represents a <see langword="static"/> set of methods for easily creating instances of type
Expand Down Expand Up @@ -180,6 +182,24 @@ public static IStorageServiceClientProvider<QueueServiceClient, QueueClientOptio
static void SetQueueClientOptionsEncodingToBase64(QueueClientOptions options)
{
options.MessageEncoding = QueueMessageEncoding.Base64;
options.MessageDecodingFailed += async (QueueMessageDecodingFailedEventArgs args) =>
{
if (args.ReceivedMessage != null)
{
QueueMessage queueMessage = args.ReceivedMessage;
string base64EncodedMessage = Convert.ToBase64String(Encoding.UTF8.GetBytes(args.ReceivedMessage.Body.ToString()));

if (args.IsRunningSynchronously)
{
args.Queue.UpdateMessage(queueMessage.MessageId, queueMessage.PopReceipt, base64EncodedMessage, TimeSpan.FromMinutes(5));
}
else
{
await args.Queue.UpdateMessageAsync(queueMessage.MessageId, queueMessage.PopReceipt, base64EncodedMessage, TimeSpan.FromMinutes(5));
}
}
};

}

#endregion
Expand Down

0 comments on commit a65f556

Please sign in to comment.