从服务总线异步接收所有代理消息的最佳方法

时间:2015-11-02 12:32:11

标签: azure servicebus brokeredmessage

这是我想要实现的目标:

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

  2. 我需要查看所有邮件而不完成邮件,并将其添加到列表(List<BrokeredMessage>)

  3. 以下是我的尝试:

    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);
                }
            }
    

    有人可以建议一个更好的方法吗?

0 个答案:

没有答案