【问题标题】:What is the underlying mechanism to receive message in Azure Function Service Bus Queue Triggered functions?在 Azure Function Service Bus Queue Triggered 函数中接收消息的底层机制是什么?
【发布时间】:2021-10-29 00:17:36
【问题描述】:

我了解 Azure Function - Azure Storage Queue 触发的函数是在轮询的基础上触发的。

但似乎无法找到 Azure 服务总线队列的工作原理。它是否也遵循轮询方法或与 Azure 服务总线队列客户端建立会话,只要将消息发送到队列中就会触发(类似于事件驱动的方法)?

请参考以下代码:

[FunctionName("ServiceBusFunction")]
public static void Run([ServiceBusTrigger("testQueueDuplicateDetection")] string myQueueItem, ILogger log)
{
    log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}

【问题讨论】:

    标签: azure azure-functions azureservicebus azure-servicebus-queues azure-triggers


    【解决方案1】:

    由于底层服务架构,SerivceBusTrigger 也是基于轮询

    Azure 服务总线特性:

    是一种可靠的异步消息传递(企业消息传递作为 需要轮询的服务)

    Source.

    但是,Azure Service Bus integrates with Azure Event Grid(当有新消息时,Service Bus 将向 Azure EventGrid 发送事件)因此这会阻止您进行轮询 - 如果您改用 Azure Event Grid Trigger

    【讨论】:

    • 我明白了。但是无论如何我们也可以自定义 servicebustrigger 的轮询间隔吗?还是固定机制?
    • 我明白了。我是否正确理解 servicebustrigger 由内部进行轮询的 Scaling Controller 控制,因此我只能控制 maxConcurrentCalls 等参数来控制“轮询”速率?
    • 我认为是的。在这里,您可以看到可以为服务总线绑定配置的所有全局设置 - 并且没有轮询配置:docs.microsoft.com/azure/azure-functions/…。但是如果你看一下 Table Queue Binding,有一个设置可以配置轮询间隔:docs.microsoft.com/azure/azure-functions/…
    • @MartinBrandl,用于澄清向 AEG 发出 SB 事件:案例 1: 立即。如果 SB 实体为空且有新消息到达,案例 2: 每两分钟,如果 SB 实体不为空且没有活动的侦听器/接收器。
    猜你喜欢
    • 2020-09-18
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多