首页 > 解决方案 > “SubscriptionClient”不包含“PeekBatch”和 ReceiveBatch 的定义

问题描述

我有一个netstandard2.1应用程序,我正在使用 nuget package "Microsoft.Azure.ServiceBus" Version="4.1.1"

我正在创建一个 azure 服务总线SubscriptionClient并尝试使用PeekBatchand ReceiveBatch,但我遇到了错误,这里缺少什么?

“SubscriptionClient”不包含“PeekBatch”的定义,并且找不到接受“SubscriptionClient”类型的第一个参数的可访问扩展方法“PeekBatch”

“SubscriptionClient”不包含“ReceiveBatch”的定义,并且找不到接受“SubscriptionClient”类型的第一个参数的可访问扩展方法“PeekBatch”

 _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
                    }
                }
            }

标签: c#azure-servicebus-subscriptions.net-standard-2.1

解决方案


您目前不能使用批处理方法和从 .net 标准或核心预取。

在此处查看文档:https ://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements?tabs=net-standard-sdk#prefetching-and-receivebatch

预取

本部分仅适用于 WindowsAzure.ServiceBus SDK,因为 Microsoft.Azure.ServiceBus SDK 不公开批处理函数。

请注意此处的 WindowsAzure:https ://www.nuget.org/packages/WindowsAzure.ServiceBus/

请注意,此软件包至少需要 .Net Framework 4.6.2。

仅 .net,不支持网络核心或网络标准


推荐阅读