从服务总线主题触发Azure功能,而不使用Brokered Connections

问题描述 投票:2回答:1

所以,我正在分析使用函数来消费来自主题的服务总线消息是否可行。

我们选择的Service Bus定价计划对每月“Brokered connections”(最多1000个)的数量有限制。

我的理解是,在典型的使用场景中,消费者/听众/订户连接到主题并持续保持连接,在很长一段时间(一天,甚至一周)内接收多条消息而不断开连接,这是算作1'代理连接'。最后,您可以在单个代理连接上接收数千条消息。

如何使用Azure功能绑定?从我在文档中看到的,一个函数可以是空闲的(即没有运行),因此它无法维持这种持久连接。

是否有一个单独的功能组件,可以使此连接保持监听传入消息?或者,每当函数空闲然后重新启动时,我们是否会为新的代理连接收费?

我包括当前计划功能的屏幕截图:https://azure.microsoft.com/en-us/pricing/details/service-bus/

current plan features

稍后在同一链接中:

Brokered connections overage


编辑

来自Docs

服务总线收费超过包含数量的并发代理连接峰值数量(标准层中为1,000)。峰值按小时计算,按一个月除以744小时按比例计算,并在每月结算期间累加。包含的数量(每月1,000个代理连接数)在结算周期结束时应用于按比例分配的每小时峰值的总和。

他们在最后一句中特别提到“每月1000个连接点”。

这是一个例子:

10,000个设备中的每一个都通过单个AMQP连接进行连接,并从服务总线主题接收命令。设备将遥测事件发送到事件中心。如果所有设备每天连接12小时,则需支付以下连接费用(除了任何其他服务总线主题费用):10,000个连接* 12小时* 31天/ 744 = 5,000个代理连接。在每月允许1,000个代理连接后,您将被收取4,000个代理连接,每个代理连接的费用为0.03美元,总计120美元。

所以我想所有这些都是在12小时内同时连接到主题的10.000个订户,如果​​他们每天连接24小时,那么将收取9,000个代理连接(10,000减去所包含的1,000个)?

在任何情况下,我也试图验证功能是否可以持久连接(我被告知他们使用webjobs)。

azure azure-functions azureservicebus servicebus
1个回答
3
投票

Azure Functions有一个称为ScaleController的独立组件,可以全天候监视服务总线的事件。

由于函数中的底层SB消息接收器是在WebJobs中实现的,因此将有一个连接可以在Function实例的整个生命周期内检索多个消息,尽管由于其当前的限制,它一次传递一个消息您的功能代码进行处理。

您只需在功能代码实际运行时付费。这是一个链接,为您提供ScaleController的概述:https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#runtime-scaling

如果您预计负载相对较高,您是否考虑过使用Event Hub而不是Service Bus? Azure功能中的ServiceBus-Triggers目前一次只能处理一条消息,这对于高负载方案来说不是最佳的。这是一个GitHub问题,用于跟踪此功能请求:https://github.com/Azure/azure-webjobs-sdk/issues/1024

EventHub-Triggers可以批量处理消息,这样可以为每个Function执行提供更多功能。见https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs

© www.soinside.com 2019 - 2024. All rights reserved.