云消息隊列 MQTT 版作為事件源通過事件總線EventBridge與函數計算集成后,通過云消息隊列 MQTT 版觸發器能夠觸發關聯函數執行,通過函數可以對發布到云消息隊列 MQTT 版的消息進行自定義處理。本文介紹如何在函數計算控制臺創建MQTT觸發器、配置入口參數以及編寫代碼并測試。
背景信息
您在函數計算的控制臺提交觸發器創建請求后,函數計算會根據觸發器的配置信息,自動在事件總線EventBridge側創建事件流資源。
創建完成后,您可以在函數計算控制臺查看觸發器信息,同時也可以在事件總線EventBridge控制臺查看自動創建的資源信息。當云消息隊列 MQTT 版中有消息入隊時,將會觸發函數計算執行,觸發時會根據您的攢批配置將一個或多個消息事件以批的形式推送到函數中進行處理。
前提條件
事件總線EventBridge
函數計算
云消息隊列 MQTT 版
使用限制
作為觸發源的云消息隊列 MQTT 版實例必須和函數計算的函數在相同的地域。
創建的事件流數量超過上限后,將無法再創建MQTT觸發器。關于事件流數量的限制,請參見使用限制。
步驟一:創建MQTT觸發器
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
在函數詳情頁面,單擊觸發器管理頁簽,從版本或別名下拉列表選擇要創建觸發器的版本或別名,然后單擊創建觸發器。
在創建觸發器面板,填寫相關信息,然后單擊確定。
配置項
操作
本文示例
觸發器類型
選擇消息隊列 MQTT 版。
消息隊列 MQTT 版
名稱
填寫自定義的觸發器名稱。
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
消息內容。
步驟三:編寫函數代碼并測試
觸發器創建完成后,您可以開始編寫并測試函數代碼,以驗證代碼的正確性。在實際操作過程中,當云消息隊列 MQTT 版接收到消息后,觸發器會自動觸發函數執行。
在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然后單擊部署代碼。
本文以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'); }
- 單擊函數代碼頁簽的測試函數。執行完成后,您可以在函數代碼頁簽的上方查看執行結果。
更多信息
除了函數計算控制臺,您還可以通過以下方式配置觸發器:
如需對創建的觸發器進行修改或刪除,具體操作,請參見觸發器管理。