0

这是我想要实现的目标:

  1. 在服务总线上,我有一个包含 5005 条消息的主题。

  2. 我需要查看所有消息而不完成它们并将它们添加到列表中(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);
            }
        }

谁能建议一个更好的方法来做到这一点?

4

0 回答 0