これが私が達成しようとしていることです:
サービス バスには、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);
}
}
誰でもこれを行うためのより良い方法を提案できますか?