【问题标题】:Throttle/restrict serviceBus Queue to triggered the message form ServiceBusTrigger限制/限制 serviceBus Queue 以触发消息形式 ServiceBusTrigger
【发布时间】:2019-01-16 09:47:36
【问题描述】:

我有一个 ServiceBusQueue(SBQ),它可以获取大量消息负载。 我有一个带有 accessRights(manage) 的 ServiceBusTrigger(SBT),它不断地从 SBQ 轮询消息。

我面临的问题是: 我的 SBT(一次 16 个实例)一次选择消息(单独 16 条消息)并创建对另一台服务器的请求(假设 S1)。 如果 SBT 连续创建 500-600 个请求,则服务器 S1 停止响应。

我期待: 我可以限制/限制一次从 SBQ 中选择消息,以便我间接限制发送请求。

请分享您的想法,我应该遵循什么设计。我无法搜索确切的解决方案。

【问题讨论】:

    标签: c# azure azure-functions azureservicebus


    【解决方案1】:
    1. 限制服务总线触发器的maximum concurrent calls

      host.json 中,添加配置以限制并发(即默认情况下16 messages at once 你已经看到了)。以 v2 函数为例。

      {
        "version": "2.0",
        "extensions": {
          "serviceBus": {
              "messageHandlerOptions": {
                  "maxConcurrentCalls": 8
              }
           }
        }
      }
      
    2. 限制Function host instances count。当主机横向扩展时,每个实例都有一个服务总线触发器,它可以同时读取多条消息,如上所述。

      如果触发器在专用应用服务计划上,则将实例计数扩展到某个较小的值。对于Consumption plan上的功能,添加App设置WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 合理的值(

    3. 如果我们可以控制消息的发送方式,请schedule the incoming messages 帮助降低请求率。

    4. 使用static clients 重用与服务器 S1 的连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多