Сервисная шина Azure: чтение сообщений со смещением - PullRequest
0 голосов
/ 25 сентября 2018

Я читаю сообщения из служебной шины Azure в моем приложении C #.Я читаю их из очереди Dead Letter, но, полагаю, здесь это не имеет значения.Мне нужно прочитать блок сообщений заданного размера, начиная с заданного смещения (иначе говоря, страницы сообщений).

Я придумал следующий, очень неэффективный код:

SubscriptionClient client  = SubscriptionClient.CreateFromConnectionString(
  connectionString, 
  topic, 
  QueueClient.FormatDeadLetterPath(subscription));

var result = new List<string>();
for (var i = 0; i < offset + size; i++)
{
  var msg = await client.PeekAsync();
  if (msg == null)
  {
    return result;
  }

  if (i >= offset)
  {
    result.Add(msg);
  }
}

return result;

Есть ли способ, которым я могу написать этот "поиск" более эффективным способом?

1 Ответ

0 голосов
/ 25 сентября 2018

Метод SubscriptionClient.ReceiveAsync принимает Int64 порядковый номер (смещение):

for (var i = offset; i < offset + size; i++)
{
    var msg = await client.ReceiveAsync(i);
    result.Add(msg);
}
...