Лучший способ асинхронно получать все посреднические сообщения от служебной шины
Вот что я пытаюсь достичь:
На служебной шине у меня есть тема, которая содержит 5005 сообщений.
Мне нужно посмотреть все сообщения, не заполнив их, и добавить их в список
(List<BrokeredMessage>)
Вот что я пытаюсь:
IEnumerable<BrokeredMessage> dlIE = null;
List<BrokeredMessage> bmList = new List<BrokeredMessage>();
long i = 0;
while (i < count) //count is the total messages in the subscription
{
dlIE = deadLetterClient.ReceiveBatch(100);
bmList.AddRange(dlIE);
i = i + dlIE.Count();
}
В приведенном выше коде я могу получать только 100 сообщений за раз, поскольку существует ограничение на размер пакета для получения сообщений.
Я также пытался сделать асинхронно, но он всегда возвращает 0 сообщений в списке. Вот код для этого:
static List<BrokeredMessage> messageList = new List<BrokeredMessage>();
long i = 0;
while (i < count)
{
var task = ReceiveMessagesBatchForSubscription(deadLetterClient);
i = i + 100;
}
Task.WaitAny();
public async static Task ReceiveMessagesBatchForSubscription(SubscriptionClient deadLetterClient)
{
while (true)
{
var receivedMessage = await deadLetterClient.ReceiveBatchAsync(100);
messageList.AddRange(receivedMessage);
}
}
Может ли кто-нибудь предложить лучший способ сделать это?