在 Azure Logic Apps 中傳送、接收及批次處理訊息
適用於:Azure Logic Apps (使用量 + 標準)
若要以群組的特定方式一起傳送和處理訊息,您可以建立批次解決方案。 此解決方案會將訊息收集到批次,並等到符合您指定的準則,再發行及處理批次處理的訊息。 批次處理可降低您的邏輯應用程式處理訊息的頻率。
本操作指南說明如何在相同 Azure 訂用帳戶、Azure 區域內遵循這個順序,藉以建立兩個邏輯應用程式,來建置批次處理解決方案:
「批次接收者」邏輯應用程式,會接受訊息並收集到批次中,直到符合指定準則而可釋出和處理這些訊息。 請務必先建立此批次接收者,這樣一來,您之後才可以在建立批次傳送者時選取批次目的地。
一或多個「批次傳送者」邏輯應用程式,可將訊息傳送給先前建立的批次接收者。
批次傳送者可以指定唯一索引鍵,將目標批次「分割」或劃分為以該索引鍵為基礎的邏輯子集。 例如,客戶號碼是唯一索引鍵。 如此一來,接收者應用程式即可使用相同的索引鍵來收集所有項目並同時處理它們。
批次接收者和批次傳送者需要共用相同的 Azure 訂用帳戶和 Azure 區域。 如果未共用,您就無法在建立批次傳送者時選取批次接收者,原因是兩者並無法看到彼此。
必要條件
Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶。
電子郵件帳戶與任何 Azure Logic Apps 所支援的電子郵件提供者
重要
如果您想要使用 Gmail 連接器,只有 G-Suite 商務帳戶可以在邏輯應用程式中使用此連接器,而不受限制。 如果您有 Gmail 取用者帳戶,您只能使用此連接器搭配特定的 Google 核准服務,或者您可以建立 Google 用戶端應用程式,以用來向 Gmail 連接器進行驗證。 如需詳細資訊,請參閱 Azure Logic Apps 中 Google 連接器的資料安全性和隱私權原則。
邏輯應用程式工作流程的相關基本知識
若要使用 Visual Studio Code 而非 Azure 入口網站,請確定您已設定 Visual Studio Code 以使用 Azure Logic Apps。
限制
您只能比較發行的內容與來源,藉此在發行後檢查批次中的內容。
您只能在批次接收者中變更發行準則,如本指南中所述,而觸發程序仍具有批次,才能提早發行批次。 不過,觸發程序會針對任何未傳送的訊息使用更新的發行準則。
建立批次接收者
若要能夠將訊息傳送到批次中,該批次必須先成為這些訊息的傳送目的地。 因此,首先,您必須建立以 Batch 觸發程式開頭的「批次接收者」邏輯應用程式工作流程。 如此一來,當您建立「批次傳送者」邏輯應用程式工作流程時,您可以選取批次接收者邏輯應用程式工作流程。 批次接收者會繼續收集訊息,直到符合指定準則而可釋出和處理這些訊息。 雖然批次接收者不需要知道批次傳送者的任何訊息,但批次傳送者必須知道訊息的傳送目的地。
在 Azure 入口網站 中,使用空白工作流程建立邏輯應用程式資源。
此範例會建立名為 BatchReceiver 的批次接收者邏輯應用程式和工作流程。
在工作流程設計工具中,選取 [新增觸發程式],然後遵循下列一般步驟來新增名為 Batch 觸發程式的 Batch 作業觸發程式。
設定下列觸發程式屬性:
屬性 說明 模式
(僅限使用量工作流程)- 內嵌:用來定義批次觸發程序內的發行準則
- 整合帳戶:透過整合帳戶定義多個發行準則組態。 透過整合帳戶,您可以在單一位置維護這些設定,而不是在不同的邏輯應用程式資源中。批次名稱 批次的名稱。 在 [取用工作流程] 中,只有當Mode 設定為 [內嵌] 時,才會顯示此屬性。 此範例使用 TestBatch。 發行準則 處理每個批次之前要符合的準則。 根據預設,批次觸發程式會使用「內嵌模式」運作,您可以在其中定義批次觸發程式內的批次發行準則。
- 以訊息計數為基礎:根據批次所收集的訊息數目來發行批次。
- 以大小為基礎:根據該批次收集的所有訊息大小總計 (以位元組為單位) 來發行批次。
- 以排程為基礎:根據週期排程釋放批次,這會指定間隔和頻率。 您可以選擇性地選取時區,並提供開始日期和時間。
若要使用所有指定的準則,請選取所有選項。訊息計數 要在批次中收集的訊息數目,例如 10 則訊息。 批次訊息限制為8,000則訊息。 批次大小 批次中要收集之訊息的總位元組大小,例如 10 MB。 批次大小限制為 80 MB。 週期 批次發行之間的間隔和頻率,例如 10 分鐘。 最小週期是 60 秒或 1 分鐘。 小數的分鐘會無條件進位至 1 分鐘。 您可以選擇性地選取時區,並提供開始日期和時間。 注意
如果您在觸發程序仍有未傳送訊息的批次時變更發行準則,觸發程序就會使用更新後的發行準則來處理未傳送的訊息。
此範例會顯示所有準則,但是供您自己測試,只嘗試一個準則:
現在新增可處理每個批次的一或多個動作。
在此範例中,新增可在批次觸發程序引發時傳送電子郵件的動作。 當批次有 10 則訊息、達到 10 MB,或在經過 10 分鐘之後,觸發程序會執行並傳送一封電子郵件。
在批次觸發程式下,選取加號 [+>新增動作]。
請遵循下列一般步驟,根據電子郵件提供者新增傳送電子郵件的動作。
例如,如果您有公司或學校帳戶,例如,@fabrikam.com 或 @fabrikam.onmicrosoft.com,請選取 [Microsoft 365 Outlook] 連接器。 如果您有私人帳戶,例如 @outlook.com 或 @hotmail.com,請選取 [Outlook.com] 連接器。 此範例會使用 Microsoft 365 Outlook 連接器。
如果出現提示,請登入您的電子郵件帳戶。
設定下列動作屬性:
在 [收件者] 方塊中,輸入收件者的電子郵件地址。 為了測試用途,您可以使用自己的電子郵件地址。
選取 [ 主旨 ] 方塊內部,以檢視動態內容清單 (閃電圖示) 和表示式編輯器 (函式圖示) 的選項。 選取閃電圖示以開啟動態內容清單,然後選取名為 [資料分割名稱] 的字段。
稍後在批次傳送者中,您可以指定唯一的分割索引鍵,將目標批次分成邏輯子集,以便可以傳送訊息至該處。 每個集合都有批次傳送者邏輯應用程式工作流程所產生的唯一數位。 這項功能可讓您使用具有多個子集的單一批次,並用您提供的名稱定義每個子集。
重要
資料分割有 5,000 則訊息或 80 MB 的限制。 如果符合任一條件,Azure Logic Apps 可能會釋放批次,即使不符合您定義的發行條件也一樣。
選取 [ 本文 ] 方塊內,選取閃電圖示以開啟動態內容清單,然後選取 [訊息訊息標識符 ] 字段。
工作流程設計工具會自動在傳送電子郵件動作前後新增 For each 迴圈,因為該動作會將上一個動作的輸出視為集合,而非批次。
下列範例會在您選取設計工具上的 [ 針對每個 標題] 方塊,其中 Batched Items 是集合名稱之後,顯示資訊窗格:
儲存您的工作流程您 您現在已建立批次接收者。
重要
如果您使用 Visual Studio Code,請在繼續進行下一節之前,請先確定先 將批次接收者邏輯應用程式資源部署 至 Azure。 否則,當您建立批次傳送者邏輯應用程式工作流程時,您無法選取批次接收者邏輯應用程式工作流程。
建立批次傳送者
現在,建立一或多個批次傳送者邏輯應用程式工作流程,以將訊息傳送至批次接收者邏輯應用程式工作流程。 在每個批次傳送者中,您可以指定批次接收者和批次名稱、訊息內容,和任何其他設定。 您可以選擇性地提供唯一的分割索引鍵,將批次分成邏輯子集來收集具有該索引鍵的訊息。
請確定您已經建立和部署批次接收者,因此當您建立批次傳送者時,可以選取現有批次接收者做為目的地批次。 雖然批次接收者不需要知道批次傳送者的任何訊息,但批次傳送者必須知道訊息的傳送目的地。
請務必讓批次接收者和批次傳送者共用相同的 Azure 區域和和 Azure 訂用帳戶。 如果未共用,您就無法在建立批次傳送者時選取批次接收者,原因是兩者並無法看到彼此。
建立另一個名為 BatchSender 的邏輯應用程式資源和工作流程。
注意
如果您有標準邏輯應用程式資源,請務必建立具狀態工作流程,而不是無狀態工作流程,因為 無狀態工作流程無法使用週期 觸發程式。
遵循以下一般步驟以新增名為 [定期]的 [排程] 觸發程序。
本範例會設定每分鐘執行傳送者工作流程的間隔和頻率。
新增動作來將訊息傳送至批次。
在 [週期觸發程式] >底下,選取加號 [+新增動作]。
請遵循下列一般步驟,新增名為[傳送至批次觸發程式工作流程] 或 [傳送至批次] (標準工作流程) 的 Batch 作業動作。
根據您是否有取用工作流程或標準工作流程,請遵循對應的步驟:
取用工作流程
新增 [ 傳送至批次觸發程式工作流程 ] 動作之後,清單隨即出現,並只會顯示邏輯應用程式資源,其中包含與批次傳送者邏輯應用程式資源位於相同 Azure 訂 用帳戶和 Azure 區域中的邏輯應用程式資源。
從邏輯應用程式清單中,選取先前建立的邏輯應用程式作為批次接收者。 當可用的觸發程式出現時,請選取名為 Batch_messages的觸發程式。
重要
如果您使用 Visual Studio Code,而且沒有看到任何批次接收者要選取,請檢查您先前已建立並部署批次接收者至 Azure。 如果您尚未這麼做,請瞭解如何 將批次接收者邏輯應用程式資源部署至 Azure。
完成時,請選取 [ 新增動作]。
標準工作流程
新增 [ 傳送至批次 ] 動作之後,動作窗格會在下一個步驟中顯示下列屬性,讓您指定批次名稱、訊息內容、工作流程名稱和觸發程序名稱。 您只能針對批次接收者邏輯應用程式工作流程指定資訊,其中包含與批次傳送者邏輯應用程式位於相同 Azure 訂 用帳戶和 Azure 區域中的批次觸發程式。
設定下列批次接收者動作屬性:
屬性 說明 批次名稱 接收者邏輯應用程式所定義的批次名稱,在此範例中為 TestBatch
重要事項:批次名稱會在運行時間進行驗證,且必須符合批次接收者邏輯應用程式所指定的名稱。 變更批次名稱會導致批次傳送者失敗。訊息內容 您要傳送之訊息的內容。 如需要使用的值,請參閱下列範例。 工作流程名稱
(只限標準工作流程)具有批次觸發程式的工作流程名稱。 觸發程式名稱 批次接收者邏輯應用程式工作流程中批次觸發程序的名稱。 在取用工作流程中,此值會自動從選取的批次接收者邏輯應用程式填入。 工作流程標識碼 具有批次觸發程式名稱批次接收者邏輯應用程式工作流程之工作流程的標識碼。 在取用工作流程中,此值會自動從選取的批次接收者邏輯應用程式填入。 在此範例中 ,針對 [訊息內容 ] 屬性值,新增下列表達式,這會將目前日期和時間插入您傳送至批次的訊息內容中:
在 [ 訊息內容] 方塊內選取,以檢視動態內容的選項(閃電圖示)和表達式編輯器(函式圖示)。
選取函式圖示以開啟表達式編輯器。
在編輯器中,輸入名為 utcnow()的函式,然後選取 [ 新增]。
取用工作流程
標準工作流程
現在設定批次的資料分割。
在批次傳送者動作窗格中,從 [ 進階參數 ] 清單中選取下列屬性:
屬性 說明 分割名稱 選擇性的唯一分割區索引鍵,用來將目標批次分割成邏輯子集,並根據該索引鍵收集訊息。
如需此範例,請參閱下列步驟來新增表達式,以產生介於一到五之間的隨機數位。訊息識別碼 選擇性訊息識別碼,這是空時產生的全域唯一標識碼 (GUID)。 在此範例中,請將此值保留空白。 在 [ 資料分割名稱] 方塊內選取 ,然後選取表達式編輯器的選項(函式圖示)。
在表達式編輯器中 ,輸入函式 rand(1,6),然後選取 [ 新增]。
此範例會產生介於一到五之間的數位。 因此,您會將此批次分割成五個有編號的資料分割,此運算式會以動態方式設定。
當您完成時,您的批次傳送者工作流程現在看起來會類似下列範例,根據您的邏輯應用程式工作流程類型:
取用工作流程
標準工作流程
儲存您的工作流程您
測試工作流程
若要測試批處理解決方案,請讓邏輯應用程式工作流程執行幾分鐘。 很快,您會開始收到以五封為單位的電子郵件群組,全都具有相同的資料分割索引鍵。
您的批次傳送者邏輯應用程式會每分鐘執行一次,並產生介於一與五之間的亂數。 批次傳送者會使用此亂數,作為目標批次的分割區索引鍵,而您會在此目標批次中傳送訊息。 每次批次有五個項目具有相同的分割索引鍵時,批次接收者邏輯應用程式便會引發,並針對每個訊息傳送郵件。
重要
當您完成測試時,請確定您已停用或刪除 BatchSender 邏輯應用程式工作流程,以停止傳送訊息,並避免將收件匣多載。