Visualizzare o visualizzare i messaggi

L'esplorazione dei messaggi, o la visualizzazione, consente a un client di bus di servizio di enumerare tutti i messaggi in una coda o una sottoscrizione, a scopo di diagnostica e debug.

L'operazione Visualizza su una coda o una sottoscrizione restituisce al massimo il numero di messaggi richiesto. Nella tabella seguente vengono illustrati i tipi di messaggi restituiti dall'operazione Visualizza.

Tipo di messaggi Incluso
Messaggi attivi
Messaggi non recapitabili No
Messaggi bloccati
Messaggi posticipati
Messaggi scaduti Potrebbe essere (prima che siano messaggi non recapitabili)
Messaggi pianificati Sì per le code. No per le sottoscrizioni

Messaggi non recapitabili

Per visualizzare i messaggi non recapitabili di una coda o di una sottoscrizione, l'operazione di visualizzazione deve essere eseguita nella coda di messaggi non recapitabili associata alla coda o alla sottoscrizione. Per altre informazioni, vedere Accesso alle code di messaggi non recapitabili.

Messaggi scaduti

I messaggi scaduti potrebbero essere inclusi nei risultati restituiti dall'operazione Visualizza. I messaggi utilizzati e scaduti vengono puliti da un'esecuzione asincrona di "Garbage Collection". Questo passaggio potrebbe non verificarsi necessariamente immediatamente dopo la scadenza dei messaggi. Ecco perché un'operazione di anteprima potrebbe restituire messaggi che sono già scaduti. Questi messaggi verranno rimossi o non recapitabili quando viene richiamata un'operazione di ricezione nella coda o nella sottoscrizione la volta successiva. Tenere presente questo comportamento quando si tenta di recuperare i messaggi posticipati dalla coda.

Un messaggio scaduto non è più idoneo per il recupero regolare da altri mezzi, anche quando viene restituito da Peek. La restituzione di questi messaggi è progettata perché Visualizza è uno strumento di diagnostica che riflette lo stato corrente del log.

Messaggi bloccati

Visualizza anche i messaggi bloccati e attualmente elaborati da altri ricevitori. Tuttavia, poiché Visualizza restituisce uno snapshot disconnesso, lo stato di blocco di un messaggio non può essere osservato nei messaggi visualizzati.

Messaggi posticipati

I messaggi posticipati rimangono nella coda principale insieme a tutti gli altri messaggi attivi (a differenza dei messaggi non recapitabili che risiedono in una coda secondaria), ma non possono più essere ricevuti usando le normali operazioni di ricezione. I messaggi rinviati possono essere individuati tramite l'esplorazione dei messaggi se un'applicazione ne perde traccia.

Per recuperare un messaggio posticipato, il proprietario è responsabile della memorizzazione del numero di sequenza mentre lo sfida. Qualsiasi ricevitore che conosce il numero di sequenza di un messaggio posticipato può ricevere successivamente il messaggio usando metodi di ricezione che accettano il numero di sequenza come parametro. Per altre informazioni sui numeri di sequenza, vedere Sequenziazione dei messaggi e timestamp.

API Peek

Peek funziona su code, sottoscrizioni e code di messaggi non recapitabili.

Quando viene chiamato ripetutamente, l'operazione di visualizzazione enumera tutti i messaggi nella coda o nella sottoscrizione, in ordine, dal numero di sequenza disponibile più basso al più alto. È l'ordine in cui i messaggi sono stati accodati, non l'ordine in cui i messaggi potrebbero essere recuperati.

È anche possibile passare un oggetto SequenceNumber a un'operazione di visualizzazione. Viene usato per determinare da dove iniziare la peeking. È possibile effettuare chiamate successive all'operazione di visualizzazione senza specificare il parametro da enumerare ulteriormente.

Numero massimo di messaggi

È possibile specificare il numero massimo di messaggi che devono essere restituiti dall'operazione di visualizzazione. Tuttavia, non è possibile garantire una dimensione minima per il batch. Il numero di messaggi restituiti dipende da diversi fattori di cui la rete più interessata è la velocità con cui la rete può trasmettere messaggi al client. 

Ecco un frammento di codice di esempio per visualizzare tutti i messaggi con Python bus di servizio SDK. Può sequence_number​ essere usato per tenere traccia dell'ultimo messaggio visualizzato e avviare l'esplorazione al messaggio successivo.

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'output di esempio seguente deriva dalla visualizzazione di una coda con 13 messaggi in esso contenuti.

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

Provare gli esempi nel linguaggio preferito per esplorare bus di servizio di Azure funzionalità.

Trovare esempi per le librerie client .NET e Java precedenti qui:

Il 30 settembre 2026 verranno ritirati le librerie di bus di servizio di Azure SDK WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus e com.microsoft.azure.servicebus, che non sono conformi alle linee guida di Azure SDK. Il supporto del protocollo SBMP verrà terminato, quindi non sarà più possibile usare questo protocollo dopo il 30 settembre 2026. Eseguire la migrazione alle librerie più recenti di Azure SDK, che offrono aggiornamenti critici della sicurezza e funzionalità migliorate, prima di tale data.

Anche se le librerie precedenti possono ancora essere usate oltre il 30 settembre 2026, non riceveranno più il supporto e gli aggiornamenti ufficiali da Microsoft. Per altre informazioni, vedere l’annuncio del ritiro del supporto.