首页 文章

Azure功能中接收服务总线消息

提问于
浏览
0

我创建了一个ServicesBus队列并开始发送数千条消息

await queueClient.SendBatchAsync(brokeredMessagesList);

另一方面我创建了azure函数来接收来自ServicesBus队列的消息 . 这是我的代码

public static async Task RunAsync([ServiceBusTrigger("batch-input", AccessRights.Manage,
        Connection = "ServiceBusConnection")]BrokeredMessage message, TraceWriter log)
    {
        string body;
        using (var stream = message.GetBody<Stream>())
        using (var streamReader = new StreamReader(stream, Encoding.UTF8))
        {
            body = await streamReader.ReadToEndAsync();
        }
        SampleMessage sampleMessage = JsonConvert.DeserializeObject<SampleMessage>(body);

        await SaveMessageIntoAzureTableAsync(sampleMessage);
        //await message.CompleteAsync();
        log.Info($"Message body: {sampleMessage}");
    }

这段代码在我的本地工作,但我对缩放和批处理更感兴趣 .

天蓝色函数缩放如何与队列中的大量消息一起使用?我没有看到任何文件

预取计数设置是否适用于本地? here我看到默认预取计数为100 .

我什么时候应该调用完整的方法(有或没有这个我的代码工作)?

await message.CompleteAsync();

1 回答

  • 2

    函数运行时将批量检索消息并并行调用多个函数调用 . 您可以使用host.json文件调整预取计数和其他一些设置 .

    如果队列大小不断增长,Azure将启动更多实例,这也将并行处理 .

    您永远不应该明确地调用 CompleteAsync ,运行时将为您完成任何成功执行 .

相关问题