azure - Function App 每分钟仅使用来自启用 session 主题的服务总线 8 条消息

标签 azure azureservicebus azure-servicebus-topics

我们有一个消费计划功能应用程序,它通过 ServiceBusTrigger 消费来自服务总线的消息(功能是 v4,.net 6)。尽管消息处理几乎是即时的,但我们每分钟仅消耗来自服务总线的 8 条消息。

我们已经向 Azure 提出了这个问题,他们很乐于助人,但我们也很困惑为什么世界各地的其他人没有遇到同样的问题。

服务总线有一个“MaxConcurrentSessions”配置,默认设置为 8。这意味着,如果您从启用了 session 的订阅中进行消费,则每分钟只能处理 8 条消息(这当然非常慢)。

我们遇到了错误,即使设置了此设置也不受尊重 - 但我们想知道其他人是否也遇到过同样的问题?人们最终是否完全放弃了服务总线 session ,或者即使在上述限制下,人们是否仍能够实现良好的性能?

最佳答案

触发器当前使用的服务总线 SDK 包存在一个错误,该错误错误地将 session 并发性与接受 session 的同步点联系起来。因此,仅对首次接受 session 时可供读取的消息同时执行处理;该点之后到达的任何消息都不支持并发。

昨天已通过 #33035 修复了此问题,但直到下一个预定的发布窗口(目前是二月初)才会以稳定包的形式提供。

与此同时,降低 host.json settings 中的 sessionIdleTimeout 值可能会有所帮助。 。 sessionIdleTimeout 的默认值是使用 tryTimeout,除非被覆盖,否则为 60 秒。降低该值将更快地循环 session ,这应该有助于提高吞吐量。

关于azure - Function App 每分钟仅使用来自启用 session 主题的服务总线 8 条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74797482/

相关文章:

Azure-storage-blob - 目标服务器域名是什么

azure - 在azure虚拟机Windows 10上安装docker

azure - 如何使用 Azure ARM 模板将 VM 部署到资源组 "A"并引用资源组 "B"中的现有 key 保管库?

azure - 代理连接是如何计算的?

azureservicebus - Azure 服务总线 - 未经授权的访问。执行此操作需要 'Send' 声明

Azure 支付支持

azure - 确定 Azure 服务总线队列上有多少消息

java - 使用 Apache Camel 访问 Azure 服务总线?

azure - 我只希望众多消息使用者中的一个能够根据 ID 处理消息,这可以通过 Azure 服务总线实现吗?

Azure 服务总线订阅筛选器臂模板未创建 $Default 筛选器