添加对批量接收服务总线消息的支持

时间:2018-11-04 05:52:42

标签: azureservicebus azure-webjobs

在许多情况下,批处理消息的处理要比处理单个消息要高效得多。

public void Handle([ServiceBusTrigger("myqueue")] BrokeredMessage[] messages)
{
  // Process the batch of messages  
}

我的场景是::我正在使用服务总线队列。我想按特定的时间间隔批量处理排队的消息。

例如::间隔10秒,我想触发一个函数来处理队列中的所有消息

3 个答案:

答案 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