使用 Azure JS SDK for Service Bus 时需要关闭连接吗?
Posted
技术标签:
【中文标题】使用 Azure JS SDK for Service Bus 时需要关闭连接吗?【英文标题】:Closing connection when using Azure JS SDK for Service Bus is needed? 【发布时间】:2021-07-10 00:26:19 【问题描述】:如果在我的服务器端应用程序中,每次,通常是每个传入的 HTTP 请求一次或几次,我打开一个新连接 New ServiceBusClient(connStr)
并开始使用它并且不调用 close
方法,是否有任何缺点最后?
可能会导致端口或内存耗尽,或者New ServiceBusClient(connStr)
会在下面使用某种连接池,所以不用担心?
【问题讨论】:
【参考方案1】:我认为你需要在最后调用close
方法,否则会导致你提到的问题。
在官方doc中也是如此。
async function main()
const sbClient = new ServiceBusClient(connectionString);
.....
finally
await sbClient.close();
【讨论】:
你的猜测有参考吗?我知道关闭它会更安全,但问题是“必须关闭”还是“关闭会更好/更安全”? @mehran 不,但我认为这是我们经常做的正常事情,你的意思是“必须”吗?我认为世界上没有我们“必须”做的事情,当然你可以选择不关闭它,但我认为它会导致内存耗尽。如果我们已经有了更好的选择,为什么还要考虑更差的选择?【参考方案2】:不,没有连接池。每次创建ServiceBusClient
的实例时,都会创建一个底层连接。当客户端不再使用时,最好拨打close()
。
https://github.com/Azure/azure-sdk-for-js/blob/ab566082fd5182903cc2144efbbf3c197c3e6f6a/sdk/servicebus/service-bus/src/serviceBusClient.ts#L78-L96
【讨论】:
以上是关于使用 Azure JS SDK for Service Bus 时需要关闭连接吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure SDK for .NET 获取 Azure 资源 SKU
如何让我的消费者使用 Azure sdk for Golang v0.3.1 监听 Azure 服务总线上的消息?
使用 Azure.ServiceBus.Messaging C# SDK for SAS 令牌的服务总线连接字符串
如何使用 Azure SDK for Python 更改 Office 365 用户头像