在 Azure Logic Apps 中傳送、接收及批次處理訊息

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

若要以群組的特定方式一起傳送和處理訊息,您可以建立批次解決方案。 此解決方案會將訊息收集到批次,並等到符合您指定的準則,再發行及處理批次處理的訊息。 批次處理可降低您的邏輯應用程式處理訊息的頻率。

本操作指南說明如何在相同 Azure 訂用帳戶、Azure 區域內遵循這個順序,藉以建立兩個邏輯應用程式,來建置批次處理解決方案:

  1. 「批次接收者」邏輯應用程式,會接受訊息並收集到批次中,直到符合指定準則而可釋出和處理這些訊息。 請務必先建立此批次接收者,這樣一來,您之後才可以在建立批次傳送者時選取批次目的地。

  2. 一或多個「批次傳送者」邏輯應用程式,可將訊息傳送給先前建立的批次接收者。

    批次傳送者可以指定唯一索引鍵,將目標批次「分割」或劃分為以該索引鍵為基礎的邏輯子集。 例如,客戶號碼是唯一索引鍵。 如此一來,接收者應用程式即可使用相同的索引鍵來收集所有項目並同時處理它們。

批次接收者和批次傳送者需要共用相同的 Azure 訂用帳戶和 Azure 區域。 如果未共用,您就無法在建立批次傳送者時選取批次接收者,原因是兩者並無法看到彼此。

必要條件

限制

  • 您只能比較發行的內容與來源,藉此在發行後檢查批次中的內容。

  • 您只能在批次接收者中變更發行準則,如本指南中所述,而觸發程序仍具有批次,才能提早發行批次。 不過,觸發程序會針對任何未傳送的訊息使用更新的發行準則。

建立批次接收者

若要能夠將訊息傳送到批次中,該批次必須先成為這些訊息的傳送目的地。 因此,您必須先建立「批次接收者」邏輯應用程式 (其會從批次觸發程序來開始)。 這樣一來,當您建立「批次傳送者」邏輯應用程式時,就可以選取批次接收者邏輯應用程式。 批次接收者會繼續收集訊息,直到符合指定準則而可釋出和處理這些訊息。 雖然批次接收者不需要知道批次傳送者的任何訊息,但批次傳送者必須知道訊息的傳送目的地。

  1. Azure 入口網站或 Visual Studio 中,使用下列名稱來建立邏輯應用程式:BatchReceiver

  2. 在工作流程設計工具中,新增 [批次] 觸發程序,其會啟動邏輯應用程式工作流程。 在搜尋方塊中,輸入 batch,然後選取此觸發程序:批次訊息

    Add

  3. 設定批次接收者的屬性:

    屬性 說明
    批次模式 - 內嵌:用來定義批次觸發程序內的發行準則
    - 整合帳戶:透過整合帳戶,可定義多個發行準則組態。 透過整合帳戶,您可以在同一個地方維護上述所有組態,而不是在個別的邏輯應用程式中進行維護。
    批次名稱 您的批次名稱 (在此範例中為 "TestBatch"),只適用於 [內嵌] 批次模式
    發行準則 僅適用於 [內嵌] 批次模式,可選取在處理每個批次之前要先符合的準則:

    - 以訊息計數為基礎:根據批次所收集的訊息數目來發行批次。
    - 以大小為基礎:根據該批次收集的所有訊息大小總計 (以位元組為單位) 來發行批次。
    - 排程:根據週期性排程 (其可指定間隔和頻率) 來發行批次。 在進階選項中,您也可以選取時區並提供開始日期和時間。
    - 全選:使用所有指定的準則。

    訊息計數 要在批次中收集的訊息數目,例如 10 則訊息。 批次的限制為 8,000 則訊息。
    批次大小 要在批次中收集的大小總計 (以位元組為單),例如 10 MB。 批次的大小限制為 80 MB。
    [排程] 批次發行之間的間隔和頻率,例如 10 分鐘。 最小週期是 60 秒或 1 分鐘。 小數的分鐘會無條件進位至 1 分鐘。 若要指定時區或開始日期和時間,請開啟 [新增參數] 清單,然後選取對應的屬性。

    注意

    如果您在觸發程序仍有未傳送訊息的批次時變更發行準則,觸發程序就會使用更新後的發行準則來處理未傳送的訊息。

    此範例會顯示所有準則,但是供您自己測試,只嘗試一個準則:

    Provide Batch trigger details

  4. 現在新增可處理每個批次的一或多個動作。

    在此範例中,新增可在批次觸發程序引發時傳送電子郵件的動作。 當批次有 10 則訊息、達到 10 MB,或在經過 10 分鐘之後,觸發程序會執行並傳送一封電子郵件。

    1. 在批次觸發程序下方,選取 [新增步驟]

    2. 在搜尋方塊中,輸入 send email 作為篩選條件。 根據您的電子郵件提供者,選取電子郵件連接器。

      例如,如果您有公司或學校帳戶,例如,@fabrikam.com 或 @fabrikam.onmicrosoft.com,請選取 [Microsoft 365 Outlook] 連接器。 如果您有私人帳戶,例如 @outlook.com 或 @hotmail.com,請選取 [Outlook.com] 連接器。 此範例會使用 Microsoft 365 Outlook 連接器。

    3. 為提供者選取 [傳送電子郵件] 動作,例如:

      Select

  5. 如果出現提示,請登入您的電子郵件帳戶。

  6. 設定所新增動作的屬性。

    • 在 [收件者] 方塊中,輸入收件者的電子郵件地址。 為了測試用途,您可以使用自己的電子郵件地址。

    • 在 [主旨] 方塊中,當動態內容清單出現時,請選取 [分割名稱] 欄位。

      From the dynamic content list, select

      稍後在批次傳送者中,您可以指定唯一的分割索引鍵,將目標批次分成邏輯子集,以便可以傳送訊息至該處。 每個集合都有一個由批次傳送者邏輯應用程式產生的唯一數字。 這項功能可讓您使用具有多個子集的單一批次,並用您提供的名稱定義每個子集。

      重要

      資料分割有 5,000 則訊息或 80 MB 的限制。 如果符合任何一個條件,Logic Apps 可以發行批次,即使不符合您定義的發行條件。

    • 在 [內文] 方塊中,當動態內容清單出現時,請選取 [訊息識別碼] 欄位。

      工作流程設計工具會自動在傳送電子郵件動作前後新增 For each 迴圈,因為該動作會將上一個動作的輸出視為集合,而非批次。

      For

  7. 儲存邏輯應用程式。 您現在已建立批次接收者。

    Save your logic app

    重要

    如果您使用 Visual Studio,請先確定您先將批次接收者邏輯應用程式部署至 Azure,再繼續進行下一節。 否則,當您建立批次傳送者時,將無法選取批次接收者。

建立批次傳送者

現在,請建立一或多個會將訊息傳送給接收者邏輯應用程式的批次傳送者邏輯應用程式。 在每個批次傳送者中,您可以指定批次接收者和批次名稱、訊息內容,和任何其他設定。 您可以選擇性地提供唯一的分割索引鍵,將批次分成邏輯子集來收集具有該索引鍵的訊息。

  • 請確定您已經建立和部署批次接收者,因此當您建立批次傳送者時,可以選取現有批次接收者做為目的地批次。 雖然批次接收者不需要知道批次傳送者的任何訊息,但批次傳送者必須知道訊息的傳送目的地。

  • 請務必讓批次接收者和批次傳送者共用相同的 Azure 區域和 Azure 訂用帳戶。 如果未共用,您就無法在建立批次傳送者時選取批次接收者,原因是兩者並無法看到彼此。

  1. 建立具有此名稱的另一個邏輯應用程式:BatchSender

    1. 在搜尋方塊中,輸入 recurrence 作為篩選條件。 從觸發程序清單中,選取此觸發程序:週期性

      Add the Recurrence trigger

    2. 設定間隔和頻率,每分鐘執行傳送者邏輯應用程式。

      Set frequency and interval for Recurrence trigger

  2. 新增動作來將訊息傳送至批次。

    1. 在 [定期] 觸發程序下方,選擇 [新增步驟]

    2. 在搜尋方塊中,輸入 batch 做為篩選條件,然後選取此動作:選擇具有批次觸發程序的 Logic Apps 工作流程

      Select

      清單隨即出現,只顯示具有批次觸發程序的邏輯應用程式,並存在於與批次傳送者邏輯應用程式相同的 Azure 區域 Azure 訂用帳戶中。

    3. 從邏輯應用程式清單中,選取您先前建立的批次接收者邏輯應用程式。

      Select your batch receiver logic app

      重要

      如果您使用 Visual Studio,而且您未看到任何可選取的批次接收者,請確認您已將先前建立的批次接收者部署至 Azure。 如果您尚未這麼做,請瞭解如何將批次接收者邏輯應用程式部署至 Azure

    4. 從動作清單中,選取此動作:Batch_messages - <your-logic-app-name>

      Select this action:

  3. 設定批次傳送者的屬性:

    屬性 說明
    批次名稱 接收者邏輯應用程式所定義的批次名稱,在本例中為 TestBatch

    重要:批次名稱會在執行階段驗證,而且必須符合接收者邏輯應用程式所指定的名稱。 變更批次名稱會導致批次傳送者失敗。

    訊息內容 您要傳送的訊息內容

    注意

    系統會自動從您選取的邏輯應用程式填入 [觸發程序名稱] 和 [工作流程] 屬性值。

    針對此範例,請新增此運算式,它會將目前日期和時間插入到您傳送給批次的訊息內容:

    1. 按一下 [訊息內容] 方塊內部。

    2. 當動態內容清單顯示時,選取 [運算式]

    3. 輸入運算式 utcnow(),然後選取 [確定]

      In

  4. 現在設定批次的資料分割。 在 BatchReceiver 動作中,開啟 [新增參數] 清單,然後選取這些屬性。

    屬性 說明
    分割名稱 選擇性的唯一分割索引鍵,可用於將目標批次分割誠邏輯子集,以及根據該索引鍵收集訊息
    訊息識別碼 選擇性的訊息識別碼,空白時是一個產生的 全域唯一識別碼 (GUID)

    針對此範例,在 [分割名稱] 中,請新增可產生介於 1 到 5 隨機數字的運算式。 讓 [訊息識別碼] 方塊保持空白。

    1. 在 [分割名稱] 方塊內按一下,動態內容清單隨即顯示。

    2. 在動態內容清單中,選取 [運算式]

    3. 輸入運算式 rand(1,6),然後選取 [確定]

      Set up a partition for your target batch

      這個 rand 函式會產生一到五之間的數字。 因此,您會將此批次分割成五個有編號的資料分割,此運算式會以動態方式設定。

  5. 儲存邏輯應用程式。 傳送者邏輯應用程式現在看起來應該類似這個範例:

    Save your sender logic app

儲存邏輯應用程式

若要測試批次處理解決方案,請讓邏輯應用程式執行幾分鐘的時間。 很快,您會開始收到以五封為單位的電子郵件群組,全都具有相同的資料分割索引鍵。

您的批次傳送者邏輯應用程式會每分鐘執行一次,並產生介於一與五之間的亂數。 批次傳送者會使用此亂數,作為目標批次的分割區索引鍵,而您會在此目標批次中傳送訊息。 每次批次有五個項目具有相同的分割索引鍵時,批次接收者邏輯應用程式便會引發,並針對每個訊息傳送郵件。

重要

完成測試時,請確定您停用 BatchSender 邏輯應用程式,以停止傳送訊息,並避免造成收件匣過多郵件。

下一步