这是我想要实现的目标:
在服务总线上,我有一个包含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);
}
}
有人可以建议一个更好的方法吗?