QueueClientOptions.MessageDecodingFailed Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Opcional. Executa as tarefas necessárias quando uma mensagem é recebida ou atingiu o pico da fila, mas não pode ser decodificada.
Essa mensagem pode ser recebida ou atingiu o pico quando QueueClient está esperando certa QueueMessageEncoding , mas há outro produtor que não está codificando mensagens da maneira esperada. Ou seja, a fila contém mensagens com codificação diferente.
QueueMessageDecodingFailedEventArgs contém QueueClient que recebeu a mensagem, bem como ReceivedMessage ou PeekedMessage com corpo bruto, ou seja, nenhuma decodificação será tentada para que o corpo possa ser inspecionado como foi recebido da fila.
O QueueClient não tentará remover a mensagem da fila. Portanto, esse tratamento deve ser incluído no próprio manipulador de eventos.
O manipulador é potencialmente invocado por APIs de recebimento e espiar síncronas e assíncronas. Portanto, a implementação do manipulador deve se alinhar às QueueClient APIs que estão sendo usadas. Confira SyncAsyncEventHandler<T> como implementar o manipulador corretamente. O exemplo a seguir mostra um manipulador com todos os casos possíveis explorados.
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)
Tipo de evento
Aplica-se a
Azure SDK for .NET