具有服务总线触发器的Azure功能

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

我们有一个天蓝色的功能,具有启用会话的服务总线触发器。我们正在尝试处理属于一个 sessionId 的一组消息。我们观察到该函数一次只接收一条消息。有什么方法可以让 azure 函数每隔 5 分钟接收属于会话的消息集合

public async Task Run(
 [ServiceBusTrigger("<<topicname>>","<<subscriptionname>>", Connection = "<<connectionname>>", IsSessionsEnabled = true, IsBatched = true)]
 ServiceBusReceivedMessage[] messages, IReadOnlyDictionary<string, object> userProperties, string sessionId)

函数触发器在主题收到消息时执行,这意味着总会有一条消息传递到函数。在这种情况下,arg IsBatched 会做什么?它是否使函数等待一段时间以便主题接收多条消息。

azure-functions azureservicebus
1个回答
0
投票

触发器将从总线获取尽可能多的消息(受最大批量大小的限制)。如果只有一条消息可用,它将创建一个只有一条消息的批次。所以你看到的行为是正确的。 “问题”是您发布消息的速度不够快,并且您的消费者的工作速度比您本质上发布的速度快。这通常是一件好事。

要验证这一点,请停止您的函数,发布一堆消息,然后再次启动您的函数。现在您应该会收到一批包含多个消息的批次。

没有合理的标准方法可以让函数等待,直到它可以创建特定大小的批次。

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