有关使用Event Hub
触发器缩放Function App
的文档规定:
触发器(由事件中心提供支持)确保只有一个EventProcessorHost示例可以获得给定分区的租约。
...
当发生缩放时,[功能应用程序的] N个示例是大于事件中心分区数量的数字
考虑到我有一个配置了32个分区的Event Hub
,在负载下,我理解了为什么Function App
至少扩展到32个示例,每个示例锁定到一个特定的分区。
内容
我想将Event Hub
替换为Service Bus
。
在Service Bus
中发送的所有消息都被设置为Session ID
以保证顺序。
正如文档中所解释的,Session ID
将被用作Partition Key
,这意味着我将有很多分区(即超过20,000个分区-我认为这是可以的)。
问题
Function App
的扩展是如何工作的?Service Bus
分区是否像Event Hub
一样绑定到Function App
的示例?或者Function App
的任何示例都可以从任何分区获取消息?
1条答案
按热度按时间yjghlzjz1#
Service Bus中的分区功能通过在后台使用多个代理来大大提高队列或主题的吞吐量。客户端在连接时并不真正意识到这一点,而是像常规队列或主题一样工作。
因此,Azure函数无法向外扩展到它不知道的分区数量。
相反,当队列或主题中等待处理的消息越来越多时,它只是根据等待处理的消息数量进行扩展。