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