QueueClientOptions.MessageDecodingFailed Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Optionnel. Effectue les tâches nécessaires lorsqu’un message est reçu ou atteint un pic à partir de la file d’attente, mais ne peut pas être décodé.
Un tel message peut être reçu ou atteint un pic lorsque QueueClient est attendu certain QueueMessageEncoding , mais il existe un autre producteur qui n’encode pas les messages de la manière attendue. C’est-à-dire que la file d’attente contient des messages avec un encodage différent.
QueueMessageDecodingFailedEventArgs contient QueueClient qui a reçu le message ainsi ReceivedMessage que ou PeekedMessage avec le corps brut, c’est-à-dire qu’aucun décodage ne sera tenté afin que le corps puisse être inspecté comme cela a été reçu de la file d’attente.
Ne QueueClient tente pas de supprimer le message de la file d’attente. Par conséquent, cette gestion doit être incluse dans le gestionnaire d’événements lui-même.
Le gestionnaire est potentiellement appelé par les API de réception et d’aperçu synchrones et asynchrones. Par conséquent, l’implémentation du gestionnaire doit s’aligner sur QueueClient les API utilisées. Découvrez SyncAsyncEventHandler<T> comment implémenter correctement le gestionnaire. L’exemple ci-dessous montre un gestionnaire avec tous les cas possibles explorés.
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)
Type d'événement
S’applique à
Azure SDK for .NET