Как проверить задержанные сообщения

Есть ли способ перечислять и проверять отложенные сообщения для служебной шины Microsoft Windows (не Azure)?

Я хочу сделать вид Peek только для задержанных сообщений, и в конечном итоге фильтровать сообщения, чтобы видеть только определенные сообщения.

Является ли это возможным?

Заранее спасибо, Джузеппе.

1 ответ

есть перечислениеMessageStateкоторый сообщает вам состояние сообщения (активное, запланированное или отложенное), которое просматривается. Вот как это можно сделать с помощьюWindowsAzure.ServiceBusупаковка.

      MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString("<connection-string>");
QueueClient queueClient = messagingFactory.CreateQueueClient("<queue>");
var scheduledMessages = new List<BrokeredMessage>();
var message = queueClient.Peek();
while (message != null)
{
    // With this condition, you get to filter Scheduled messages
    if (message.State == MessageState.Scheduled)
    {
        scheduledMessages.Add(message);
    }
    message = queueClient.Peek();
}

Для тех, кто ищет то же самое сAzure.Messaging.ServiceBuspackage, это можно сделать, как показано ниже:

      ServiceBusClient client = new ServiceBusClient("<connection-string>");
ServiceBusReceiver serviceBusReceiver = client.CreateReceiver("<queue-name>");
var scheduledMessages = new List<ServiceBusReceivedMessage>();
var message = await serviceBusReceiver.PeekMessageAsync();
while (message != null)
{
    // With this condition, you get to filter Scheduled messages
    if (message.State == ServiceBusMessageState.Scheduled)
    {
        scheduledMessages.Add(message);
    }
    message = await serviceBusReceiver.PeekMessageAsync();
}
Другие вопросы по тегам