QueueClientOptions.MessageDecodingFailed イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
省略可能。 キューからメッセージを受信またはピークしたときに必要なタスクを実行しますが、デコードできません。
このようなメッセージは、特定QueueMessageEncodingのメッセージを想定しているが、予期した方法でメッセージをエンコードしていない別のプロデューサーがある場合QueueClientに、受信またはピークに設定できます。 つまり、キューにはエンコードが異なるメッセージが含まれています。
QueueMessageDecodingFailedEventArgsQueueClientには、メッセージReceivedMessageを受信した、またはPeekedMessage未加工の本文が含まれています。つまり、キューから受信した本文を検査できるようにデコードは試行されません。
では QueueClient 、キューからメッセージを削除しようとはしません。 そのため、このような処理はイベント ハンドラー自体に含める必要があります。
ハンドラーは、同期と非同期の両方の受信 API とピーク API によって呼び出される可能性があります。 したがって、ハンドラーの実装は、使用されている API に合わせる QueueClient 必要があります。 ハンドラーを正しく実装する方法について説明 SyncAsyncEventHandler<T> します。 次の例は、考えられるすべてのケースを調べるハンドラーを示しています。
QueueClientOptions queueClientOptions = new QueueClientOptions()
{
MessageEncoding = QueueMessageEncoding.Base64
};
queueClientOptions.MessageDecodingFailed += async (QueueMessageDecodingFailedEventArgs args) =>
{
if (args.PeekedMessage != null)
{
Console.WriteLine($"Invalid message has been peeked, message id={args.PeekedMessage.MessageId} body={args.PeekedMessage.Body}");
}
else if (args.ReceivedMessage != null)
{
Console.WriteLine($"Invalid message has been received, message id={args.ReceivedMessage.MessageId} body={args.ReceivedMessage.Body}");
if (args.IsRunningSynchronously)
{
args.Queue.DeleteMessage(args.ReceivedMessage.MessageId, args.ReceivedMessage.PopReceipt);
}
else
{
await args.Queue.DeleteMessageAsync(args.ReceivedMessage.MessageId, args.ReceivedMessage.PopReceipt);
}
}
};
QueueClient queueClient = new QueueClient(connectionString, queueName, queueClientOptions);
public event Azure.Core.SyncAsyncEventHandler<Azure.Storage.Queues.QueueMessageDecodingFailedEventArgs> MessageDecodingFailed;
member this.MessageDecodingFailed : Azure.Core.SyncAsyncEventHandler<Azure.Storage.Queues.QueueMessageDecodingFailedEventArgs>
Public Event MessageDecodingFailed As SyncAsyncEventHandler(Of QueueMessageDecodingFailedEventArgs)
イベントの種類
適用対象
Azure SDK for .NET