İletilere göz atma veya göz atma

İleti gözatma veya göz atma, tanılama ve hata ayıklama amacıyla Service Bus istemcisinin kuyruktaki veya abonelikteki tüm iletileri listelemesini sağlar.

Kuyrukta veya abonelikte Göz atma işlemi en fazla istenen ileti sayısını döndürür. Aşağıdaki tabloda, Göz atma işlemi tarafından döndürülen ileti türleri gösterilmektedir.

İleti türü Dahil?
Etkin iletiler Yes
Teslim edilemeyen iletiler Hayır
Kilitli iletiler Yes
Ertelenen iletiler Yes
Süresi dolan iletiler Olabilir (bunlar teslim edilmeden önce)
Zamanlanmış iletiler Kuyruklar için evet. Abonelikler için hayır

Teslim edilemeyen iletiler

Bir kuyruğun veya aboneliğin teslim edilemeyen iletilerine göz atmak için, göz atma işlemi kuyruk veya abonelikle ilişkili teslim edilemeyen ileti kuyruğunda çalıştırılmalıdır. Daha fazla bilgi için bkz . Teslim edilemeyen ileti kuyruklarına erişme.

Süresi dolan iletiler

Süresi dolan iletiler, Göz atma işleminden döndürülen sonuçlara eklenebilir. Tüketilen ve süresi dolan iletiler, zaman uyumsuz bir "çöp toplama" çalıştırması tarafından temizlenir. bu adım, iletilerin süresi dolduktan hemen sonra gerçekleşmeyebilir. Bu nedenle, bir göz atma işlemi süresi dolmuş iletileri döndürebilir. Bir sonraki sefer kuyrukta veya abonelikte bir alma işlemi çağrıldığında bu iletiler kaldırılır veya teslim alınmaz. Kuyruktan ertelenen iletileri kurtarmaya çalışırken bu davranışı göz önünde bulundurun.

Süresi dolmuş bir ileti, Peek tarafından döndürülürken bile artık başka bir yolla normal alma için uygun değildir. Göz atma, günlüğün geçerli durumunu yansıtan bir tanılama aracı olduğundan, bu iletileri döndürmek tasarım gereğidir.

Kilitli iletiler

Göz atma, kilitli olan ve şu anda diğer alıcılar tarafından işlenen iletileri de döndürür. Ancak, Göz atma bağlantısı kesilmiş bir anlık görüntü döndürdüğünden, bir iletinin kilit durumu gözlenen iletilerde gözlemlenemez.

Ertelenen iletiler

Ertelenen iletiler diğer tüm etkin iletilerle birlikte ana kuyrukta kalır (bir alt sorguda yer alan teslim edilemeyen iletilerden farklı olarak), ancak bunlar artık normal alma işlemleri kullanılarak alınamıyor. Ertelenen iletiler, bir uygulama bunların izini kaybederse iletiye göz atma yoluyla bulunabilir.

Ertelenen bir iletiyi almak için, sahibi, dizi numarasını erteledikçe hatırlamakla sorumludur. Ertelenen iletinin sıra numarasını bilen herhangi bir alıcı, daha sonra sıra numarasını parametre olarak alan alma yöntemlerini kullanarak iletiyi alabilir. Sıra numaraları hakkında daha fazla bilgi için bkz . İleti sıralama ve zaman damgaları.

API'lere göz atma

Göz atma, kuyruklarda, aboneliklerde ve bunların teslim edilemeyen kuyruklarında çalışır.

Tekrar tekrar çağrıldığında, göz atma işlemi kuyruktaki veya abonelikteki tüm iletileri kullanılabilir en düşük sıra numarasından en yükseğe sıralı olarak numaralandırır. İletilerin sıralanma sırasıdır, iletilerin alınabileceği sıra değildir.

Bir SequenceNumber değerini bir göz atma işlemine de geçirebilirsiniz. Nereden göz atabileceğinizi belirlemek için kullanılır. Daha fazla numaralandırılacak parametreyi belirtmeden göz atma işlemine sonraki çağrılar yapabilirsiniz.

İleti sayısı üst sınırı

Göz atma işleminin döndürmesini istediğiniz ileti sayısı üst sınırını belirtebilirsiniz. Ancak, toplu iş için en düşük boyutu garanti etmenin bir yolu yoktur. Döndürülen iletilerin sayısı, ağın istemciye iletileri ne kadar hızlı akışla aktarabileceği konusunda en etkili olan çeşitli faktörlere bağlıdır. 

.NET SDK'sı ile tüm iletilere göz atmak için örnek bir kod parçacığı aşağıda verilmiştır. , SequenceNumber​ son göz atılan iletiyi izlemek ve sonraki iletiye göz atmaya başlamak için kullanılabilir.

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);
}

Aşağıdaki örnek çıkış, içinde 13 ileti bulunan bir kuyruğa göz atma işlemidir.

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

Azure Service Bus özelliklerini keşfetmek için örnekleri istediğiniz dilde deneyin.

Eski .NET ve Java istemci kitaplıkları için örnekleri burada bulabilirsiniz:

30 Eylül 2026'da Azure SDK yönergelerine uymayan WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus ve com.microsoft.azure.servicebus Azure Service Bus SDK kitaplıklarını kullanımdan kaldıracağız. Ayrıca SBMP protokolünün desteğini de sonlandıracağız, bu nedenle 30 Eylül 2026'da bu protokolü artık kullanamayacaksınız. Bu tarihten önce kritik güvenlik güncelleştirmeleri ve geliştirilmiş özellikler sunan en son Azure SDK kitaplıklarına geçiş yapın.

Eski kitaplıklar 30 Eylül 2026'dan sonra da kullanılabilir olsa da artık Microsoft'tan resmi destek ve güncelleştirmeler almayacaktır. Daha fazla bilgi için bkz . destek kullanımdan kaldırma duyurusu.