在许多情况下,批处理消息的处理要比处理单个消息要高效得多。
public void Handle([ServiceBusTrigger("myqueue")] BrokeredMessage[] messages)
{
// Process the batch of messages
}
我的场景是::我正在使用服务总线队列。我想按特定的时间间隔批量处理排队的消息。
例如::间隔10秒,我想触发一个函数来处理队列中的所有消息
答案 0 :(得分:0)
Properties props = System.getProperties();
props.setProperty("javax.accessibility.assistive_technologies", "");
不适用于批处理。而是将其设计为一个消息泵,一次为您提供一条消息。 Azure Functions基础结构负责创建侦听器,并在Function完成后完成消息。
如果需要批量处理,建议研究Azure Service Bus with EventGrid。
此功能的关键方案是消息量很少的服务总线队列或订阅不需要具有连续轮询消息的接收器。
使用这种方法,您可以让Function订阅并在ServiceBusTrigger
事件上触发,并批量接收消息。
答案 1 :(得分:0)
Azure Service Bus通过SDK提供批处理操作。有关实现方法,请参见此link。
仅当消息进入队列时,才会触发“ Azure功能服务总线”触发器。
由于您的要求是定期检查消息并批量接收消息,因此可以使用Timer trigger
在Azure Function中批量处理消息。答案 2 :(得分:0)
4.1.0版的ServiceBusTrigger
支持分批处理,但对于您的情况,建议使用TimerTrigger
更合适。
https://github.com/Azure/azure-functions-servicebus-extension/issues/15
https://github.com/Azure/azure-functions-servicebus-extension/releases/tag/v4.1.0