gpt4 book ai didi

c# - "Wake up"服务总线队列触发的 Azure Function 时间

转载 作者:行者123 更新时间:2023-12-04 02:46:22 25 4
gpt4 key购买 nike

我有一个由 Azure 服务总线队列触发的 Azure Function - Azure Function App 托管在消费计划中。

当队列中出现新消息时,唤醒 Azure Function 最多需要多长时间? (假设过去 20 分钟内没有消息)。

是否在任何地方指定?我在 Documentation 中找到了那:

For non-HTTP triggers, new instances will only be allocated at most once every 30 seconds.

这是否意味着我无法在 30 秒内更快地处理队列中的第一条消息?

将计时器触发的 Azure Functions 添加到同一 Function App(以及触发的服务总线)是否有助于保持 Azure Function 实例的正常运行?

最佳答案

处理 ServiceBusTrigger 函数“冷启动”的另一个选项是使用 Azure 事件网格 的事件功能,如果有服务总线实体中没有消息,并且有新消息到达。查看更多详情here

请注意,当第一条消息到达服务总线实体时,该事件立即发出。在这种情况下,当消息存在时,根据监听器/接收器的空闲时间发出下一个事件。此空闲(看门狗)时间定期为 120 秒,从上次在服务总线实体上使用监听器/接收器开始。

这是一个推送模型,服务总线实体上没有监听器,因此 AEG 订阅者(EventGridTrigger 函数)将与 ServiceBusTrigger 函数(其监听器/接收器)“平衡”接收消息。

使用REST API为了从服务总线实体(队列)删除/接收消息,订阅者可以非常容易和直接地获得它。

因此,在主题 providers/Microsoft.ServiceBus/namespaces/myNamespace 上使用 AEG 事件并在 eventType = "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners" 上进行过滤,可以通过ServiceBudTrigger功能并行接收消息,解决“冷启动”时的AF问题。

请注意,只有 Azure 服务总线高级层集成到 AEG。

以下代码片段显示了使用 EventGridTrigger 函数的服务总线 AEG 订阅器的示例:

#r "Newtonsoft.Json"

using System;
using System.Threading.Tasks;
using System.Text;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public static async Task Run(JObject eventGridEvent, ILogger log)
{
log.LogInformation(eventGridEvent.ToString());

string requestUri = $"{eventGridEvent["data"]?["requestUri"]?.Value<string>()}";
if(!string.IsNullOrEmpty(requestUri))
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", Environment.GetEnvironmentVariable("AzureServiceBus_token"));
var response = await client.DeleteAsync(requestUri);

// status & headers
log.LogInformation(response.ToString());

// message body
log.LogInformation(await response.Content.ReadAsStringAsync());
}
}

await Task.CompletedTask;
}

关于c# - "Wake up"服务总线队列触发的 Azure Function 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com