我正在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;
有没有一种方法可以更有效地编写此“搜索”?
答案 0 :(得分:0)
SubscriptionClient.ReceiveAsync方法接受一个Int64
序列号(偏移量):
for (var i = offset; i < offset + size; i++)
{
var msg = await client.ReceiveAsync(i);
result.Add(msg);
}