多个ServiceBusClient共用AzureSasCredential的更新及连接状态疑问
Azure.Messaging.ServiceBus SDK相关问题解答
共用AzureSasCredential的多个ServiceBusClient令牌更新问题
当多个ServiceBusClient实例共用同一个AzureSasCredential对象时,调用AzureSasCredential.Update(newSasToken)更新令牌后,所有客户端都会自动应用新的SAS令牌。
因为AzureSasCredential是引用类型,所有共享它的ServiceBusClient都会在需要使用凭证的后续操作(比如发送、接收消息,或刷新连接时)获取最新的令牌值,无需重新创建客户端实例。只要更新操作成功,后续请求都会使用新令牌,有效期也会同步更新为新令牌的有效期。
长时间无收发操作时的连接状态问题
ServiceBusClient基于AMQP协议维护连接池,当客户端长时间(数小时)未进行收发操作时:
- SDK会根据配置的
ConnectionIdleTimeout(默认5分钟)判断是否关闭空闲连接。如果超过超时时间,SDK会主动关闭该连接,此时该连接不再被Service Bus命名空间算作“活跃连接”。 - 如果未达到空闲超时时间,连接会处于空闲状态,但SDK会通过心跳机制维持连接存活,此时该连接仍会被命名空间视为“活跃连接”。
你可以通过ServiceBusClientOptions.ConnectionIdleTimeout参数调整这个超时时间,适配业务场景需求。
内容的提问来源于stack exchange,提问作者Arun Prakash Nagendran
相关产品推荐
相关产品推荐

