Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le parcours des messages, ou « Peek », permet à un client Service Bus d’énumérer tous les messages d’une file d’attente ou d’un abonnement, à des fins de diagnostic et de débogage.
L’opération Peek sur une file d’attente ou un abonnement retourne au plus le nombre de messages demandé. Le tableau suivant indique les types de messages retournés par l’opération Peek.
| Type de messages | Inclus ? |
|---|---|
| Messages actifs | Oui |
| Messages de lettres mortes | Non |
| Messages verrouillés | Oui |
| Messages différés | Oui |
| Messages arrivés à expiration | Peut être (avant mise en file d’attente des messages non distribués) |
| Messages planifiés | Oui pour les files d’attente. Non pour les abonnements |
Messages de lettres mortes
Pour afficher un aperçu des messages mis en file d’attente des messages non distribués d’une file d’attente ou d’un abonnement, l’opération d’affichage de l’aperçu doit être exécutée sur la file d’attente des messages non distribués associée à la file d’attente ou à l’abonnement. Pour plus d’informations, consultez Accès aux files d’attente de messages non distribués.
Messages expirés
Les messages expirés peuvent être inclus dans les résultats retournés à partir de l’opération Peek. Les messages consommés et arrivés à expiration sont nettoyés par une exécution asynchrone de « garbage collection ». Cette étape peut ne pas nécessairement se produire immédiatement après l’expiration des messages. C’est pourquoi une opération d’aperçu peut renvoyer des messages qui ont déjà expiré. Ces messages seront supprimés ou mis en file d’attente de lettres mortes la prochaine fois qu’une opération de réception sera appelée sur la file d’attente ou l’abonnement. Gardez ce comportement à l’esprit lorsque vous tentez de récupérer des messages différés de la file d’attente.
Un message arrivé à expiration n’est plus éligible pour la récupération normale par d’autres moyens, même quand il est retourné par Peek. Le renvoi de ces messages est délibéré, car Peek est un outil de diagnostic reflétant l’état actuel du log.
Messages verrouillés
Peek renvoie également les messages qui ont été verrouillés et qui sont actuellement traités par d’autres destinataires. Toutefois, étant donné que Peek renvoie un instantané déconnecté, l’état de verrou d’un message ne peut pas être observé sur des messages aperçus.
Messages différés
Les messages différés restent dans la file d’attente principale avec tous les autres messages actifs (contrairement aux messages de type lettres mortes qui se trouvent dans une sous-file d’attente), mais ils ne peuvent plus être reçus à l’aide des opérations de réception habituelles. Les messages reportés peuvent être détectés via la navigation dans les messages si une application perd leur trace.
Pour récupérer un message différé, son propriétaire doit se souvenir du numéro de séquence lorsqu’il le diffère. Tout destinataire qui connaît le numéro de séquence d’un message différé peut ultérieurement recevoir le message en utilisant les méthodes de réception qui prennent le numéro de séquence comme paramètre. Pour plus d’informations sur les numéros de séquence, consultez Séquencement et horodatage des messages.
API de l’outil Peek
Peek fonctionne sur les files d’attente, les abonnements et leurs files d’attente de messages non distribués respectives.
Lorsqu’elle est appelée à plusieurs reprises, l’opération Peek énumère tous les messages de la file d’attente ou de l’abonnement, du plus petit numéro de séquence disponible au plus grand. C’est l’ordre dans lequel les messages ont été empilés, et non l’ordre dans lequel ils peuvent être récupérés au final.
Vous pouvez également transmettre un SequenceNumber à une opération Peek. Il permet de déterminer où commencer l’aperçu. Vous pouvez effectuer des appels ultérieurs à l’opération Peek sans spécifier le paramètre pour poursuivre l’énumération.
Nombre maximal de messages
Vous pouvez spécifier le nombre maximal de messages que vous souhaitez que l’opération d’aperçu retourne. Mais il n’existe aucun moyen de garantir une taille minimale pour le lot. Le nombre de messages retournés dépend de plusieurs facteurs dont le plus impactant est la rapidité avec laquelle le réseau peut diffuser des messages vers le client.
Voici un exemple d’extrait de code permettant d’examiner tous les messages avec le Kit de développement logiciel (SDK) .NET. Le SequenceNumber peut être utilisé pour suivre le dernier message dont l'aperçu a été affiché et commencer à parcourir le message suivant.
using Azure.Messaging.ServiceBus;
// Create a Service Bus client for your namespace
ServiceBusClient client = new ServiceBusClient("NAMESPACECONNECTIONSTRING");
// Create Service Bus receiver for your queue in the namespace
ServiceBusReceiver receiver = client.CreateReceiver("QUEUENAME");
// Peek operation with max count set to 5
var peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5);
// Keep receiving while there are messages in the queue
while (peekedMessages.Count > 0)
{
int counter = 0; // To get the sequence number of the last peeked message
int countPeekedMessages = peekedMessages.Count;
if (countPeekedMessages > 0)
{
// For each peeked message, print the message body
foreach (ServiceBusReceivedMessage msg in peekedMessages)
{
Console.WriteLine(msg.Body);
counter++;
}
Console.WriteLine("Peek round complete");
Console.WriteLine("");
}
// Start receiving from the message after the last one
var fromSeqNum = peekedMessages[counter-1].SequenceNumber + 1;
peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5, fromSequenceNumber: fromSeqNum);
}
L’exemple de sortie suivant provient de la consultation d’une file d’attente contenant 13 messages.
Message 1
Message 2
Message 3
Message 4
Message 5
Peek round complete
Message 6
Message 7
Message 8
Message 9
Message 10
Peek round complete
Message 11
Message 12
Message 13
Peek round complete
Contenu connexe
Essayez les exemples dans le langage de votre choix pour explorer les fonctionnalités d’Azure Service Bus.
- Exemples de bibliothèque cliente Azure Service Bus pour .NET (dernière version) - - Exemple : envoi et réception de messages.
- Exemples de bibliothèque de client Azure Service Bus pour Java (dernière version) - Examiner un message - Exemple
- Exemples de la bibliothèque cliente Azure Service Bus pour Python - receive_peek.py exemple
- Exemples de bibliothèque de client Azure Service Bus pour JavaScript - browseMessages.js - Exemple
- Exemples de bibliothèque de client Azure Service Bus pour TypeScript - browseMessages.ts - Exemple