c# - 限制/限制 serviceBus 队列以触发 ServiceBusTrigger 形式的消息

标签 c# azure azure-functions azureservicebus

我有一个 ServiceBusQueue(SBQ),它获取大量消息负载。 我有一个具有 accessRights(manage) 的 ServiceBusTrigger(SBT),它不断轮询来自 SBQ 的消息。

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

我期待: 我可以限制/限制从 SBQ 立即选取消息,以便间接限制发送请求。

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

最佳答案

  1. 限制 maximum concurrent calls服务总线触发器。

    host.json 中,添加配置以限制并发性(即默认情况下一次发送 16 条消息,您已经看到了)。以v2函数为例。

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

    如果触发器位于专用应用服务计划上,则实例的扩展会计为某个小值。消费计划功能,添加App设置WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 具有合理的值(value)(<=5)。当然我们可以将计数设置为1,以严格控制行为。

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

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

关于c# - 限制/限制 serviceBus 队列以触发 ServiceBusTrigger 形式的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214265/

相关文章:

c# - xamarin 形式清除 session ios xamarin 形式

azure - 带有 powershell 的新 Azure Active Directory

python - Azure Functions Blob 部署

c# - Azure Blob 存储 | AcquireLeaseAsync,同步等待直到锁释放

azure-functions - 选择 `azure function` 与 `http request` 操作是否有性能优势?

c# - 换色器功能的堆栈溢出错误

c# - 处理泛型

c# - 我需要从字符串中去除所有符号以创建一个忽略标点符号的 `IEqualityComparer`

azure - 添加对 Azure Blob 存储的 nlog 支持后,Xamarin 版本构建失败

azure - 如何在 Microsoft Azure 的 Jupiter Notebook 中为 Spark 集群安排 pyspark 作业?