Azure服务总线:读取带偏移量的消息

时间:2018-09-25 10:52:05

标签: c# azure azureservicebus azure-servicebus-queues

我正在C#应用程序中读取来自Azure Service Bus的消息。我正在从Dead Letter Queue中阅读它们,但我想在这里没关系。我需要从给定的偏移量(也就是一页信息)开始读取给定大小的消息块。

我想出了以下效率很低的代码:

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 :(得分:0)

SubscriptionClient.ReceiveAsync方法接受一个Int64序列号(偏移量):

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