gpt4 book ai didi

当使用 NLog 更新文件时,Azure Blob 触发器函数仅触发一次

转载 作者:行者123 更新时间:2023-12-03 03:39:20 25 4
gpt4 key购买 nike

我正在使用 NLog 将消息记录在 Azure Blob 存储中,Blob 名称为 dd-mm-yyyy.log。对于我插入“dd-mm-yyyy.log”文件中的每条消息,我想调用/触发 azure blob 触发函数。

例如,如果我在一个请求中依次插入 3 条消息,则 azure blob 触发函数应触发 3 次。 Curranty 仅触发 1 次。

但是,如果我插入 3 条相差 1 分钟的消息(即 1 分钟插入 1 条消息),则 azure blob 触发函数会触发 3 次。

下面是 Nlog 代码:

try
{
//Some logic
}
catch (Exception ex)
{
LoggingHelper.Fatal($"Exception : {Convert.ToString(ex)}");
LoggingHelper.Fatal($"InnerException : {Convert.ToString(ex.InnerException)}");
LoggingHelper.Fatal($"Exception StackTrace: {ex.StackTrace}");
}

Azure Blob 触发代码:

[FunctionName("Function1")]
public static async Task Run([BlobTrigger("poccontainer/{name}", Connection = "")] Stream myBlob, string name,
ILogger log, ExecutionContext context, BlobProperties Properties)
{
log.LogInformation($"Blob Name:{name}");
//Logic to process the file data
}

我希望每次在 dd-mm-yyyy.log 中插入消息时都触发 azure blob 触发函数。

我尝试过但没有用的解决方案:我在 host.json 文件中添加了以下代码,但没有用。

{
"version": "2.0",
"extensions": {
"queues": {
"batchSize": 1
}
}
}

非常感谢任何帮助。

最佳答案

我建议根本不要使用该函数的 Azure Blob 触发器。 Blob 触发器依赖于轮询机制,因此在您的情况下,时间可能是问题。来自 the docs :

[...] There's no guarantee that all events are captured. Under some conditions, logs may be missed.

If you require faster or more reliable blob processing, consider creating a queue message when you create the blob. Then use a queue trigger instead of a blob trigger to process the blob. Another option is to use Event Grid; see the tutorial Automate resizing uploaded images using Event Grid.

我肯定会检查您的情况下的事件网格触发器。或者,如果顺序很重要,则基于队列的触发器。

关于当使用 NLog 更新文件时,Azure Blob 触发器函数仅触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71929265/

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