استعراض الرسائل أو النظرة الخاطفة

يُمكن Message browsing, or peeking عميل Service Bus من تعداد كافة الرسائل في قائمة انتظار أو اشتراك، لأغراض التشخيص وتصحيح الأخطاء.

ترجع عملية «Peek» في قائمة انتظار أو اشتراك على الأكثر العدد المطلوب من الرسائل. يعرض الجدول التالي أنواع الرسائل التي يتم إرجاعها بواسطة عملية «Peek».

نوع الرسائل مضمنة؟
الرسائل النشطة ‏‏نعم‬
الرسائل ذات الحروف الميتة لا
الرسائل المقفولة ‏‏نعم‬
الرسائل المؤجلة ‏‏نعم‬
الرسائل منتهية الصلاحية قد يكون (قبل أن تكون غير مستخدمة)
الرسائل المجدولة نعم لقوائم الانتظار. لا للاشتراكات

الرسائل ذات الحروف الميتة

لق نظرة خاطفة على الرسائل غير المستخدمة لقائمة انتظار أو اشتراك، يجب تشغيل عملية النظرة الخاطفة على قائمة انتظار الرسائل غير المستخدمة المقترنة بقائمة الانتظار أو الاشتراك. لمزيد من المعلومات، راجع الوصول إلى قوائم انتظار الأحرف غير المستخدمة.

الرسائل منتهية الصلاحية

قد يتم تضمين الرسائل منتهية الصلاحية في النتائج التي تم إرجاعها من عملية نظرة خاطفة. يتم تنظيف الرسائل المنتهية الصلاحية والمستهلكة بتشغيل "garbage collection" غير متزامن. قد لا تحدث هذه الخطوة بالضرورة مباشرة بعد انتهاء صلاحية الرسائل. لهذا السبب، قد تقوم عملية النظرة الخاطفة بإعادة الرسائل التي انتهت صلاحيتها بالفعل. ستتم إزالة هذه الرسائل أو تصبح حروفها غير مستخدمة عند استدعاء عملية الاستلام في قائمة الانتظار أو الاشتراك في المرة التالية. ضع هذا السلوك في الاعتبار عند محاولة استرداد deferred messages من قائمة الانتظار.

لم تعد الرسالة منتهية الصلاحية مؤهلة للاسترجاع المنتظم بأي وسيلة أخرى، حتى عندما يتم إرجاعها بواسطة «Peek». إرجاع هذه الرسائل حسب التصميم حيث تعتبر «Peek» أداة تشخيص تعكس الحالة الحالية للسجل.

الرسائل المقفولة

تقوم أيضًا الرسائل بإرجاع الرسائل التي تم قفلها ويتم حاليًّا معالجتها من قبل أجهزة الاستقبال الأخرى. ومع ذلك، نظرًا لأن «Peek» تُعيد لقطة تم قطع اتصالها، لا يمكن ملاحظة حالة القفل لرسالة على الرسائل التي تم تحريرها.

الرسائل المؤجلة

تبقى deferred messages في قائمة الانتظار الرئيسية مع كافة الرسائل النشطة الأخرى (بعكس الرسائل الخامدة المتواجدة في قائمة انتظار فرعية)، ولكن لم يعد من الممكن تلقيها باستخدام عمليات الاستقبال العادية. يمكن اكتشاف Deferred messages من خلال تصفح الرسائل إذا فقد أحد التطبيقات تعقبها.

لاسترداد رسالة مؤجلة، يكون مالكها مسؤولا عن تذكر رقم التسلسل أثناء تأجيله. يمكن لأي جهاز استقبال يعرف sequence number الخاص بـ deferred message أن يتلقى الرسالة لاحقًا باستخدام أساليب الاستلام التي تأخذ رقم التسلسل كمعلمة. لمزيد من المعلومات حول sequence numbers، راجع «Message sequencing and timestamps».

«Peek» واجهة برمجة التطبيقات

تعمل «Peek» على قوائم الانتظار والاشتراكات وقوائم الانتظار غير المستخدمة.

عند الاستدعاء المتكرر، تقوم عملية peek بتعداد كافة الرسائل في قائمة الانتظار أو الاشتراك، بالترتيب، من رقم التسلسل المتوفر الأدنى إلى الأعلى. إنه الأمر حيث يتم فيه إدراج الرسائل وليس الأمر الذي يتم فيه استرداد الرسائل في النهاية.

يمكنك أيضًا تمرير SequenceNumber إلى عملية «peek ». يتم استخدامه لتحديد من أين تبدأ النظرة الخاطفة. يمكنك إجراء استدعاءات لاحقة إلى عملية «peek» دون تحديد معلمة تعداد إضافية.

الحد الأقصى لعدد الرسائل

يمكنك تحديد الحد الأقصى لعدد الرسائل التي تريد أن ترجعها عملية النظرة الخاطفة. ولكن، لا توجد طريقة لضمان الحد الأدنى لحجم الدفعة. يعتمد عدد الرسائل التي تم إرجاعها على عدة عوامل من أكثرها تأثيرا هو مدى سرعة الشبكة في دفق الرسائل إلى العميل. 

فيما يلي مثال على القصاصة البرمجية لق نظرة خاطفة على جميع الرسائل باستخدام .NET SDK. SequenceNumber​ يمكن استخدام لتعقب آخر رسالة خاطفة وبدء الاستعراض في الرسالة التالية.

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

ناتج العينة التالي هو من نظرة خاطفة على قائمة انتظار تحتوي على 13 رسالة.

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

جرب العينات باللغة التي تختارها لاستكشاف ميزات ناقل خدمة Microsoft Azure.

ابحث عن نماذج لمكتبات عميل .NET وJava الأقدم هنا:

في 30 سبتمبر 2026، سنتقاعد مكتبات SDK ناقل خدمة Azure WindowsAzure.ServiceBus وMicrosoft.Azure.ServiceBus و com.microsoft.azure.servicebus، والتي لا تتوافق مع إرشادات Azure SDK. سننهي أيضا دعم بروتوكول SBMP، لذلك لن تتمكن من استخدام هذا البروتوكول بعد 30 سبتمبر 2026. قم بالترحيل إلى أحدث مكتبات Azure SDK، والتي توفر تحديثات أمان هامة وقدرات محسنة، قبل ذلك التاريخ.

على الرغم من أنه لا يزال من الممكن استخدام المكتبات القديمة بعد 30 سبتمبر 2026، إلا أنها لن تتلقى بعد ذلك الدعم والتحديثات الرسمية من Microsoft. لمزيد من المعلومات، راجع إعلان إيقاف الدعم.