簡體   English   中英

Azure 存儲 Blob 觸發器未喚醒睡眠 function

[英]Azure Storage Blob Trigger is not awakening a sleeping function

這個問題類似於Azure Blob 存儲觸發器 Function 未觸發

然而,他們的問題是他們的 Azure Function 並沒有立即醒來,給人的印象是它沒有處理來自 Azure Blob Storage 的觸發器,這正是它聲稱的事實。

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=csharp

我的問題不一樣。 我的 blob 現在已經在容器中放置了 9 個小時,但仍未處理。

它所做的只是在 ServiceBus 上發布一條消息。

[FunctionName("IncomingFileDetected")]
[return: ServiceBus("incoming-file-received", EntityType = Microsoft.Azure.WebJobs.ServiceBus.EntityType.Topic)]
public static IncomingFile Run(
    [BlobTrigger("incoming-files/{filename}", Connection = "ConnectionStrings:MutableStorage")]
    Stream contents,
    string filename,
    ILogger log)
{
    log.LogInformation($"Detected new blob file: {filename}");
    return new IncomingFile(filename);
}

服務總線中未出現任何消息。

現在,9 小時后,我重新啟動了 function 應用程序,並且在大約 10 分鍾內處理了 blob。

更新:

感謝彼得莫里斯的分享,問題出在服務計划是d1。 所以首先要確保你是基於三種計划:消費計划、高級計划和應用服務計划。 當我們使用 azure function 時,即使只是測試,我們也應該使用消耗計划。 生產中最小的是 S1,通常用於測試。

原答案:

下面的代碼在我這邊工作正常。 就連消費計划都沒有問題。

using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp35
{
    public static class Function1
    {
        [FunctionName("Function1")]
        [return: ServiceBus("test", Connection = "ServiceBusConnection")]
        public static string Run([BlobTrigger("samples-workitems/{name}", Connection = "str")]Stream myBlob, string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            string a = "111111111111111";
            return a;
        }
    }
}

這是我的本地設置:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=lti/ThmF+mw9BebOacp9gVazIh76Q39ecikHSCkaTcGK5hmInspX+EkjzpNmvCPWsnvapWziHQHL+kKt2V+lZw==;EndpointSuffix=core.windows.net",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "str": "DefaultEndpointsProtocol=xxxxxx",
    "ServiceBusConnection": "Endpoint=sb://bowmantestxxxxxx"
  }
}

str 來自這個地方:

在此處輸入圖像描述

ServiceBusConnection 來自這個地方:

在此處輸入圖像描述

在此處輸入圖像描述

請注意,在觸發 azure function 后,blob 不會從容器中刪除。 另外,不要忘記在您的服務總線主題中創建至少一個訂閱。

在此處輸入圖像描述

在將 function 部署到 azure 之后,上述所有操作也可以正常工作。(與本地的區別是您需要在配置設置中添加設置而不是 local.settings.json)

在此處輸入圖像描述

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM