【问题标题】:Azure service bus: Process 1 message at a timeAzure 服务总线:一次处理 1 条消息
【发布时间】:2022-10-08 19:51:58
【问题描述】:

现在,我们使用 Azure 服务总线来触发我们的函数应用。传入消息的速率非常高,但我们希望一次只触发一条消息(以我们自己的节奏处理而不是处理太多的请求错误)。 如何配置服务总线一次只向接收者发送一条消息? 这是我们的基本功能应用程序代码:

    [FunctionName("ServiceBusListener")]
    public void Run([ServiceBusTrigger("myqueue", Connection = "MyConnection")]string queueContent, ILogger log)
    {
        _myService.ProcessMessage(queueContent);
        log.LogInformation($"C# ServiceBus queue trigger function processed message: {queueContent}");
    }

【问题讨论】:

  • 您是否考虑过使用队列?
  • 我已经考虑过了。那是最坏的情况。唯一的问题是我必须自己管理队列中的所有内容。我希望服务总线有一个用例来控制消耗率
  • @PeterBons 关于使用服务总线实现相同目标的任何想法?
  • 谷歌搜索将我带到 MaxMessageBatchSize,可能还需要设置 MaxConcurrentCalls 和 MaxConcurrentSessions。

标签: c# azure .net-core azure-functions azureservicebus


【解决方案1】:

您没有将服务总线设置为一次发送一条消息,而是将您的函数应用设置为一次处理一条服务总线消息。转到您的host.json,然后添加以下内容:

"extensions": {
        "serviceBus": {
            "messageHandlerOptions": {
                "maxConcurrentCalls": 1
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2022-01-16
    相关资源
    最近更新 更多