Как проверить задержанные сообщения
Есть ли способ перечислять и проверять отложенные сообщения для служебной шины 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.ServiceBus
package, это можно сделать, как показано ниже:
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();
}