Partager via


QueueClientOptions.MessageDecodingFailed Événement

Définition

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 à