使用 Azure Functions 呼叫邏輯應用程式工作流程,以設定長時間執行的工作

適用於:Azure Logic Apps (使用量)

當您需要部署長時間執行的接聽程式或工作時,您可以建立邏輯應用程式工作流程,以使用要求觸發程序和 Azure Functions 來呼叫該觸發程序並執行工作流程。

例如,您可以建立函式,以接聽抵達 Azure 服務匯流排佇列的訊息。 發生此事件時,函式會呼叫要求觸發程序,此觸發程序可作為推送觸發程序來自動執行工作流程。

本操作指南說明如何建立以要求觸發程序開頭的邏輯應用程式工作流程。 然後,您可以建立接聽服務匯流排佇列的函式。 當訊息抵達佇列時,函式會呼叫要求觸發程序所建立的端點來執行工作流程。

注意

雖然您可以使用取用或標準邏輯應用程式工作流程來實作此行為,但此範例會繼續使用取用工作流程。

必要條件

建立邏輯應用程式工作流程

  1. Azure 入口網站中,選取 [空白邏輯應用程式] 範本來建立取用空白邏輯應用程式。

  2. 在設計工具開啟之後,於設計工具搜尋方塊底下,選取 [內建]。 在搜尋方塊中,輸入 request

  3. 從觸發程序清單中,選取名為 When a HTTP request is received 的觸發程序。

    Screenshot of the designer in the portal. The search box contains 'http request.' Under 'Triggers,' 'When a HTTP request is received' is highlighted.

    使用 [要求] 觸發程序,您可以選擇性地輸入 JSON 結構描述,以便搭配佇列訊息使用。 JSON 結構描述可協助設計工具瞭解輸入資料的結構,並且讓您在工作流程中更輕鬆地選取輸出。

  4. 若要指定結構描述,請在 [要求本文 JSON 結構描述] 方塊中輸入結構描述。

    Screenshot of the details of an HTTP request trigger. Some JSON code is visible in the 'Request Body JSON Schema' box.

    如果您沒有結構描述,但是有 JSON 格式的範例承載,即可從該承載產生 JSON 結構描述。

    1. 在要求觸發程序中,選取 [使用範例承載來產生結構描述]

    2. 在 [輸入或貼上範例 JSON 承載] 之下,輸入您的範例承載,然後選取 [完成]

      Screenshot of the details of an HTTP request trigger. Under 'Enter or paste a sample JSON payload,' some payload data is visible.

      稍早所描述的範例承載會產生下列結構描述,其會出現在觸發程序中:

      {
         "type": "object",
         "properties": {
            "address": {
               "type": "object",
               "properties": {
                  "number": {
                     "type": "integer"
                  },
                  "street": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  },
                  "postalCode": {
                     "type": "integer"
                  },
                  "country": {
                     "type": "string"
                  }
               }
            }
         }
      }
      
  5. 在觸發程序之下,新增您要用來處理已接收訊息的任何其他動作。

    例如,您可以新增可透過 Office 365 Outlook 連接器傳送電子郵件的動作。

  6. 儲存您的邏輯應用程式工作流程。

    此步驟會產生工作流程中要求觸發程序的回呼 URL。 稍後,您會在 Azure 服務匯流排佇列觸發程序的程式碼中使用這個回撥 URL。 此回撥 URL 會出現在 HTTP POST URL 屬性中。

    Screenshot of the details of an HTTP request trigger. Next to 'HTTP POST URL,' a URL is visible.

建立函式

接下來,建立接聽佇列的函式,並在訊息送達時呼叫要求觸發程序上的端點。

  1. Azure 入口網站中開啟您的函數應用程式。

  2. 在函式應用程式導覽功能表上,選取 [函式]。 在 [函式] 窗格上,選取 [建立]

    Screenshot of a function app with 'Functions' highlighted on the function app menu. The 'Functions' page is opened, and 'Create' is highlighted.

  3. 在 [選取範本] 底下,選取名為 [Azure 服務匯流排佇列觸發程序] 的範本。 [範本詳細資料] 區段出現之後,其會根據您的範本選取項目顯示不同的選項,並提供下列資訊:

    屬性 數值 Description
    新增函式 <function-name> 輸入函式的名稱。
    服務匯流排連線 <Service-Bus-connection> 選取 [新增] 以設定服務匯流排佇列的連線,以使用服務匯流排 SDK OnMessageReceive() 接聽程式。
    佇列名稱 <queue-name> 輸入佇列 的名稱。

    Screenshot of the 'Create function' pane with 'Azure Service Bus Queue trigger' highlighted, and template example details entered.

  4. 完成時,選取建立

    Azure 入口網站現在會顯示新 Azure 服務匯流排佇列觸發程序函式的 [概觀] 頁面。

  5. 現在,撰寫基本函式來呼叫您稍早建立之邏輯應用程式工作流程的端點。 撰寫您的函式之前,請先檢閱下列考量:

    下列範例會以非同步模式使用Task.Run 方法。 如需詳細資訊,請參閱使用 async 和 await 進行非同步程式設計。 此範例也會使用 application/json 訊息內容類型,但是您可以視需要變更此類型。

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    // Set up the URI for the logic app workflow. You can also get this value on the logic app's 'Overview' pane, under the trigger history, or from an environment variable.
    private static string logicAppUri = @"https://prod-05.westus.logic.azure.com:443/workflows/<remaining-callback-URL>";
    
    // Reuse the instance of HTTP clients if possible. For more information, see https://learn.microsoft.com/azure/azure-functions/manage-connections.
    private static HttpClient httpClient = new HttpClient();
    
    public static async Task Run(string myQueueItem, TraceWriter log) 
    {
       log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
       var response = await httpClient.PostAsync(logicAppUri, new StringContent(myQueueItem, Encoding.UTF8, "application/json")); 
    }
    

測試邏輯應用程式工作流程

若要進行測試,請使用下列步驟或其他工具,將訊息新增至您的服務匯流排佇列:

  1. Azure 入口網站中開啟您的服務匯流排命名空間。

  2. 在 [服務匯流排命名空間] 導覽功能表上,選取 [佇列]

    Screenshot of a Service Bus namespace. On the navigation menu, 'Queues' is highlighted.

  3. 選取您稍早使用服務匯流排連線連結至函式的服務匯流排佇列。

  4. 在佇列導覽功能表上,選取 [服務匯流排總管],然後在工具列上選取 [ 傳送訊息]

    Screenshot of a Service Bus queue page in the portal, with 'Send messages' highlighted. On the navigation menu, 'Service Bus Explorer' is highlighted.

  5. 在 [傳送訊息] 窗格中,指定要傳送至服務匯流排佇列的訊息。

    此訊息會觸發邏輯應用程式工作流程。

下一步