使用英语阅读

通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

ServiceBusSessionProcessor 类

定义

ServiceBusSessionProcessor围绕一组 ServiceBusSessionReceiver 提供抽象,允许使用基于事件的模型来处理收到的 ServiceBusReceivedMessage。 它是通过调用 CreateSessionProcessor(String, ServiceBusSessionProcessorOptions)构造的。 消息处理程序是使用 ProcessMessageAsync 属性指定的。 使用 属性指定 ProcessErrorAsync 错误处理程序。 若要在指定处理程序后开始处理,请调用 StartProcessingAsync(CancellationToken)

public class ServiceBusSessionProcessor : IAsyncDisposable
继承
ServiceBusSessionProcessor
实现

注解

可以 ServiceBusSessionProcessor 安全地缓存并在应用程序的生存期内使用,或者在释放创建它的 之前 ServiceBusClient 使用。 建议在应用程序定期处理消息时缓存处理器。 发送方负责确保高效的网络、CPU 和内存使用。 在应用程序关闭时对关联的 ServiceBusClient 调用DisposeAsync()将确保正确清理处理器使用的网络资源和其他非托管对象。

构造函数

属性

AutoCompleteMessages

获取一个值,该值指示处理器是否应在消息处理程序完成处理后自动完成消息。 如果消息处理程序触发异常,则消息不会自动完成。

EntityPath

获取处理器连接到的服务总线实体的路径,该路径特定于包含它的服务总线命名空间。

FullyQualifiedNamespace

获取接收方与之关联的完全限定的服务总线命名空间。 这可能类似于 {yournamespace}.servicebus.windows.net

Identifier

获取用于标识此处理器客户端的标识符。 如果 null 或为空,则将使用随机唯一值。

InnerProcessor

ServiceBusProcessor会话处理器委托给的 。 出于测试目的,可以重写此代码。

IsClosed

指示此 ServiceBusSessionProcessor 是否已关闭。

IsProcessing

获取此处理器当前是否正在处理消息。

MaxAutoLockRenewalDuration

获取自动续订会话锁的最长持续时间。

MaxConcurrentCallsPerSession

获取处理器每个会话将启动的回调的最大调用数。 因此,回调总数将等于 MaxConcurrentSessions * MaxConcurrentCallsPerSession。 默认值为 1。

MaxConcurrentSessions

获取处理器将同时处理的最大会话数。 默认值为 8。

PrefetchCount

获取处理期间将从队列或订阅预先请求的消息数。 这旨在通过允许处理器从本地缓存接收而不是等待服务请求来帮助最大化吞吐量。

ReceiveMode

获取 ReceiveMode 用于指定消息接收方式的 。 默认为 PeekLock 模式。

SessionIdleTimeout

获取等待当前活动会话接收消息的最长时间。 经过该时间后,处理器将关闭此会话并尝试处理另一个会话。 如果未指定, TryTimeout 将使用 。

方法

CloseAsync(CancellationToken)

执行清理 所使用的 ServiceBusSessionProcessor资源所需的任务。

DisposeAsync()

执行清理 所使用的 ServiceBusSessionProcessor资源所需的任务。 这等效于调用 CloseAsync(CancellationToken)

OnProcessErrorAsync(ProcessErrorEventArgs)

在处理过程中发生错误时调用错误事件处理程序。 可以重写此方法以手动引发事件以进行测试。

OnProcessSessionMessageAsync(ProcessSessionMessageEventArgs)

在收到消息后调用进程消息事件处理程序。 可以重写此方法以手动引发事件以进行测试。

OnSessionClosingAsync(ProcessSessionEventArgs)

当会话即将关闭进行处理时,调用会话关闭事件处理程序。 可以重写此方法以手动引发事件以进行测试。

OnSessionInitializingAsync(ProcessSessionEventArgs)

在即将处理新会话时调用会话打开事件处理程序。 可以重写此方法以手动引发事件以进行测试。

StartProcessingAsync(CancellationToken)

向处理器发出开始处理消息的信号。 如果在处理器正在运行时调用此方法, InvalidOperationException 则会引发 。

StopProcessingAsync(CancellationToken)

向处理器发出停止处理消息的信号。 如果在处理器未运行时调用此方法,则不执行任何操作。 此方法不会关闭基础接收方,但会导致接收方停止接收。 将等待任何正在进行的消息处理程序,并且此方法不会返回,直到所有正在进行的消息处理程序都已返回。 若要关闭基础接收器, CloseAsync(CancellationToken) 应调用 。 如果 CloseAsync(CancellationToken) 调用 ,则无法重启处理器。 如果希望在调用此方法后某个时间点恢复处理,可以调用 StartProcessingAsync(CancellationToken)

UpdateConcurrency(Int32, Int32)

汇报处理器的并发性。 此方法可用于动态更改正在运行的处理器的并发性。

UpdatePrefetchCount(Int32)

汇报处理器的预提取计数。 此方法可用于动态更改正在运行的处理器的预提取计数。

事件

ProcessErrorAsync

负责处理此处理器运行时引发的未经处理的异常的处理程序。 强制实施。

ProcessMessageAsync

负责处理从队列或订阅收到的消息的处理程序。 强制实施。

SessionClosingAsync

可选处理程序,可以设置为在会话即将关闭进行处理时收到通知。 这意味着最近的 ReceiveMessageAsync(Nullable<TimeSpan>, CancellationToken) 调用超时,或在 ReleaseSession() 处理程序中调用的 ProcessMessageAsync 调用。

SessionInitializingAsync

可选处理程序,可以设置为在即将处理新会话时收到通知。

适用于