Azure功能服务总线触发器:如何从事件流中停止批量数据,并且一次只允许来自队列的一条消息?

90a*_*yss 5 azure azure-servicebus-queues azure-functions

这是我第一次使用Azure功能和服务总线,所以请原谅我的无知.

我正在尝试在visual studio中构建一个功能应用程序,我能够连接到队列主题(我无法控制).问题是每次启用断点时,在VS中一次处理10个消息,这使得本地测试非常困难(更不用说数据库池引起的问题).

如何确保一次只处理一条消息,直到我完成为止?

public static void Run([ServiceBusTrigger("xxx", "yyy", AccessRights.Manage)]BrokeredMessage msg, TraceWriter log)
{
     // do something here for one message at a time.
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*sis 8

对于函数应用 2.0,您需要host.json像这样更新:

{
  "version": "2.0",
  ...
  "extensions": {
    "serviceBus": {
      "messageHandlerOptions": {
        "maxConcurrentCalls": 1
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*SFT 7

在host.json中将maxConcurrentCalls设置为1.您还可以从Azure Functions的host.json参考中获得答案

maxConcurrentCalls 16消息泵应该启动的回调的最大并发调用数.默认情况下,Functions运行时会同时处理多个消息.要指示运行时一次只处理单个队列或主题消息,请将maxConcurrentCalls设置为1