雲Message QueueTT 版作為事件來源通過事件匯流排EventBridge與Function Compute整合後,通過雲Message QueueTT 版觸發器能夠觸發關聯函數執行,通過函數可以對發布到雲Message QueueTT 版的訊息進行自訂處理。本文介紹如何在Function Compute控制台建立MQTT觸發器、配置入口參數以及編寫代碼並測試。
背景資訊
您在Function Compute的控制台提交觸發器建立請求後,Function Compute會根據觸發器的配置資訊,自動在事件匯流排EventBridge側建立事件流資源。
建立完成後,您可以在Function Compute控制台查看觸發器資訊,同時也可以在事件匯流排EventBridge控制台查看自動建立的資源資訊。當雲Message QueueTT 版中有訊息入隊時,將會觸發Function Compute執行,觸發時會根據您的攢批配置將一個或多個訊息事件以批的形式推送到函數中進行處理。
前提條件
事件匯流排EventBridge
Function Compute
雲Message QueueTT 版
使用限制
作為觸發源的雲Message QueueTT 版執行個體必須和Function Compute的函數在相同的地區。
建立的事件流數量超過上限後,將無法再建立MQTT觸發器。關於事件流數量的限制,請參見使用限制。
步驟一:建立MQTT觸發器
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
在函數詳情頁面,單擊觸發器管理頁簽,從版本或別名下拉式清單選擇要建立觸發器的版本或別名,然後單擊建立觸發器。
在建立觸發程序面板,填寫相關資訊,然後單擊確定。
配置項
操作
本文樣本
觸發器類型
選擇Message QueueTT 版。
Message QueueTT 版
名稱
填寫自訂的觸發器名稱。
mqtt-trigger
版本或別名
預設值為LATEST,如果您需要建立其他版本或別名的觸發器,需要在函數詳情頁的右上方切換到該版本或別名。關於版本和別名的介紹,請參見管理版本和管理別名。
LATEST
MQTT 執行個體
選擇已建立的MQTT執行個體。
mqtt-xxx
MQTT Topic
選擇已建立的MQTT Topic。
testTopic
調用方式
選擇函數調用方式。
取值說明如下:
同步調用
觸發器啟用狀態
建立觸發器後是否立即啟用。預設勾選啟用觸發器,即建立觸發器後立即啟用觸發器。
啟動觸發器
關於推送配置、重試和死信等進階配置項說明,請參見觸發器進階功能。
建立完成後,在觸發器管理頁簽下會顯示已建立的觸發器。如果需要對建立的觸發器進行修改或刪除,請參見觸發器管理。
步驟二:配置函數入口參數
MQTT事件來源會以event的形式作為輸入參數傳遞給函數,您可以手動將event傳給函數類比觸發事件。
在函數詳情頁面,單擊函數代碼頁簽,然後單擊測試函數右側表徵圖,從下拉式清單中,選擇配置測試參數。
在配置測試參數面板,選擇建立新測試事件或編輯已有測試事件頁簽,填寫事件名稱和事件內容。然後單擊確定。
event格式如下所示。
[ { "props": { "firstTopic": "testTopic", "secondTopic": "/testMq4****", "clientId": "consumerGroupID@@@xxx" }, "body": "hello mq4Iot pub sub msg" } ]
event欄位包含的參數解釋如下表所示。
參數
類型
樣本值
描述
props
Map
訊息屬性。
firstTopic
String
testTopic
用於收發訊息的父級Topic。
secondTopic
String
/testMq4****
子級Topic。
clientId
String
consumerGroupID@@@xx
用戶端ID。
body
String
hello mq4Iot pub sub msg
訊息內容。
步驟三:編寫函數代碼並測試
觸發器建立完成後,您可以開始編寫並測試函數代碼,以驗證代碼的正確性。在實際操作過程中,當雲Message QueueTT 版接收到訊息後,觸發器會自動觸發函數執行。
在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼。
本文以Node.js函數代碼為例,範例程式碼如下。
'use strict'; /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); //解析event參數,對event進行處理。 callback(null, 'return result'); }
單擊函數代碼頁簽的測試函數。
執行完成後,您可以在函數字碼頁簽的上方查看執行結果。
更多資訊
除了Function Compute控制台,您還可以通過以下方式配置觸發器:
如需對建立的觸發器進行修改或刪除,具體操作,請參見觸發器管理。