Azure文档中的最佳实践文章建议重新使用QueueClient发送多条消息以获得更快的性能。
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements#reusing-factories-and-clients
我有一个请求-响应消息传递的场景,其中Azure功能在被服务总线队列触发器(这是请求消息)触发后发送响应。
如果每次函数执行时都创建一个新的QueueClient,则QueueClient.SendAsync的性能会很慢(1.5到3秒)。
如果我在静态变量中重用QueueClient,则稍后的调用的SendAsync时间减少为50ms。但是,静态引用似乎不是重用QueueClient连接的可靠方法,因为我不知道何时关闭它。
是否有可靠的方法可以在多个函数执行之间重用然后关闭QueueClient?
Azure-Function运行时可以提供任何可以可靠关闭队列客户端的事件吗?
最佳答案
我认为这里的挑战是Azure功能不知道何时“完成”发送消息。如果您的Function闲置了一段时间,我们可能会删除实例,但我认为在不显式关闭Function的情况下在Function中进行静态QueueClient不会有任何不利之处-这将是最佳实践。