如何重用QueueClient实例从Azure函数发送响应消息?

如何重用QueueClient实例从Azure函数发送响应消息?,azure,azure-functions,azure-servicebus-queues,azure-functions-runtime,Azure,Azure Functions,Azure Servicebus Queues,Azure Functions Runtime,Azure docs的最佳实践文章建议重用QueueClient发送多条消息以获得更快的性能。 我有一个请求-响应消息传递的场景,其中Azure函数在被服务总线队列触发器(请求消息)触发后发送响应。 如果每次执行函数时都创建一个新的QueueClient,QueueClient.SendAsync的性能会很慢(1.5到3秒) 如果我在静态变量中重用QueueClient,那么SendAsync时间将减少到50毫秒,以便以后调用。然而,静态引用似乎不是重用QueueClient连接的可靠方法,因

Azure docs的最佳实践文章建议重用QueueClient发送多条消息以获得更快的性能。

我有一个请求-响应消息传递的场景,其中Azure函数在被服务总线队列触发器(请求消息)触发后发送响应。 如果每次执行函数时都创建一个新的QueueClient,QueueClient.SendAsync的性能会很慢(1.5到3秒)

如果我在静态变量中重用QueueClient,那么SendAsync时间将减少到50毫秒,以便以后调用。然而,静态引用似乎不是重用QueueClient连接的可靠方法,因为我不知道何时关闭它

是否有可靠的方法可以跨多个函数执行重用并关闭QueueClient?
Azure Function runtime是否可以提供任何我可以可靠地关闭队列客户端的事件?

我认为这里的挑战在于Azure函数不知道您何时“完成”发送消息。如果您的函数闲置了一段时间,我们可能会删除实例,但我不认为在函数中使用静态QueueClient而不显式关闭它有任何缺点,这将是一种最佳做法。

我建议您切换到服务总线输出绑定,而不是使用
QueueClient
手动发送消息。这样,运行时将为您管理
QueueClient
的实例及其配置。请参阅“服务总线输出绑定”部分

否则,@jeffhollan建议的静态
QueueClient
是一个可行的选择