问题描述
我有一个netstandard2.1
应用程序,并且我正在使用nuget软件包"Microsoft.Azure.ServiceBus" Version="4.1.1"
。
我正在创建天蓝色的服务总线SubscriptionClient
,并尝试使用PeekBatch
和ReceiveBatch
,但是我遇到了麻烦,这里缺少什么?
'SubscriptionClient'不包含'PeekBatch'的定义,找不到可访问的扩展方法'PeekBatch'接受类型为'SubscriptionClient'的第一个参数
'SubscriptionClient'不包含'ReceiveBatch'的定义,找不到可以接受的扩展方法'PeekBatch'接受类型为'SubscriptionClient'的第一个参数
_subscriptionClient = new SubscriptionClient(connectionString,topicName,subscriptionName,ReceiveMode.ReceiveAndDelete);
_subscriptionClient.PrefetchCount = 16;
while (_subscriptionClient.PeekBatch(16).Any())
{
var pendingMessages = _subscriptionClient.ReceiveBatch(16,TimeSpan.FromSeconds(1))?.ToList();
if (pendingMessages != null)
{
foreach (var message in pendingMessages)
{
// do processing of the message
}
}
}
解决方法
目前无法从.net标准或核心使用批处理方法和预取。
在此处查看文档:{{3}}
预取
本节仅适用于WindowsAzure.ServiceBus SDK,因为Microsoft.Azure.ServiceBus SDK不公开批处理功能。
请注意,WindowsAzure在这里:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements?tabs=net-standard-sdk#prefetching-and-receivebatch
请注意,此程序包至少需要.Net Framework 4.6.2。
仅.net,不支持网络核心或网络标准