輕量消息隊列(原 MNS)隊列觸發(fā)器
輕量消息隊列(原 MNS)的隊列(Queue)作為事件源通過事件總線EventBridge與函數(shù)計算集成后,通輕量消息隊列(原 MNS)隊列觸發(fā)器能夠觸發(fā)關(guān)聯(lián)函數(shù)執(zhí)行,通過函數(shù)可以對發(fā)布到輕量消息隊列(原 MNS)隊列中的消息進行自定義處理。本文介紹如何在函數(shù)計算控制臺創(chuàng)建輕量消息隊列(原 MNS)隊列觸發(fā)器、配置函數(shù)入口參數(shù)和編寫代碼并測試。
功能簡介
您在函數(shù)計算的控制臺提交觸發(fā)器創(chuàng)建請求之后,函數(shù)計算會根據(jù)觸發(fā)器的配置信息,自動在事件總線EventBridge側(cè)創(chuàng)建事件流資源。
創(chuàng)建完成后,您可以在函數(shù)計算控制臺查看觸發(fā)器信息,同時也可以在事件總線EventBridge控制臺查看自動創(chuàng)建的資源信息。當源輕量消息隊列(原 MNS)隊列中有消息入隊時,將會觸發(fā)函數(shù)計算執(zhí)行。執(zhí)行時會根據(jù)您的攢批配置,將一個或多個消息事件以批的形式推送到函數(shù)中進行處理,適合端到端的流式數(shù)據(jù)處理場景。
注意事項
作為觸發(fā)源的輕量消息隊列(原 MNS)隊列必須和函數(shù)計算的函數(shù)所在的地域相同。
創(chuàng)建的事件流數(shù)量超過上限后,將無法再創(chuàng)建輕量消息隊列(原 MNS)隊列觸發(fā)器。
在單個阿里云賬號單個地域維度下,關(guān)于創(chuàng)建觸發(fā)器涉及的資源數(shù)量的限制,請參見使用限制。
前提條件
事件總線EventBridge
函數(shù)計算
輕量消息隊列(原 MNS)
步驟一:創(chuàng)建觸發(fā)器
當您已經(jīng)創(chuàng)建好輕量消息隊列(原 MNS)的隊列,您需要登錄函數(shù)計算控制臺,進入目標函數(shù),選擇配置頁簽,創(chuàng)建觸發(fā)器,創(chuàng)建完成點擊確定如下圖所示。
上圖中的配置項如下所示。
調(diào)用方式:
同步調(diào)用:適用于順序調(diào)用場景。單個(批)事件觸發(fā)函數(shù)調(diào)用,等待函數(shù)執(zhí)行完成返回結(jié)果后,再由下一個(批)事件繼續(xù)觸發(fā)函數(shù)調(diào)用。同步調(diào)用請求正文有效負載最大為32 MB。更多信息,請參見同步調(diào)用。
異步調(diào)用:可以快速消費事件。單個(批)事件觸發(fā)函數(shù)調(diào)用,函數(shù)計算會立刻返回響應,再由下一個(批)事件繼續(xù)觸發(fā)函數(shù)調(diào)用。該過程中函數(shù)會異步執(zhí)行。異步調(diào)用請求正文有效負載最大為128 KB。更多信息,請參見異步調(diào)用。
關(guān)于推送配置、重試和死信等高級配置項說明,請參見觸發(fā)器高級功能。
創(chuàng)建完成后,在觸發(fā)器名稱列表中顯示已創(chuàng)建的觸發(fā)器。如需對創(chuàng)建的觸發(fā)器進行修改或刪除,具體操作,請參見觸發(fā)器管理。
步驟二:(可選)配置函數(shù)入口參數(shù)
輕量消息隊列(原 MNS)事件源會以event
的形式作為輸入?yún)?shù)傳遞給函數(shù),您可以使用代碼解析event參數(shù),并對event進行處理。您可以手動將event
傳給函數(shù)模擬觸發(fā)事件,測試函數(shù)代碼是否正確。
在函數(shù)詳情頁面的代碼頁簽,單擊測試函數(shù)右側(cè)的圖標,從下拉列表中,選擇配置測試參數(shù)。
在配置測試參數(shù)面板,選擇創(chuàng)建新測試事件或編輯已有測試事件,填寫事件名稱和事件內(nèi)容,然后單擊確定。
event
格式如下所示。[ { "id":"c2g71017-6f65-fhcf-a814-a396fc8d****", "source":"MNS-Function-mnstrigger", "specversion":"1.0", "type":"mns:Queue:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus", "time":"2021-04-08T06:28:17.093Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T07:06:34.028Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"MNS-Function-mnstrigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "requestId":"606EA3074344430D4C81****", "messageId":"C6DB60D1574661357FA227277445****", "messageBody":"TEST" } }, { "id":"d2g71017-6f65-fhcf-a814-a396fc8d****", "source":"MNS-Function-mnstrigger", "specversion":"1.0", "type":"mns:Queue:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus", "time":"2021-04-08T06:28:17.093Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T07:06:34.028Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"MNS-Function-mnstrigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "requestId":"606EA3074344430D4C81****", "messageId":"C6DB60D1574661357FA227277445****", "messageBody":"TEST" } } ]
data字段包含的參數(shù)解釋如下表所示。關(guān)于CloudEvents規(guī)范中定義的參數(shù)解釋,請參見事件概述。
參數(shù) 類型 示例值 描述 requestId String 606EA3074344430D4C81**** 請求ID。每個請求的ID取值唯一。 messageId String C6DB60D1574661357FA227277445**** 消息ID。每條消息的ID取值唯一。 messageBody String TEST 消息內(nèi)容。
步驟三:編寫函數(shù)代碼并測試
完成觸發(fā)器創(chuàng)建后,您可以開始編寫并測試函數(shù)代碼,以驗證代碼的正確性。在實際操作過程中,當輕量消息隊列(原 MNS)自定義事件源產(chǎn)生的事件通過事件總線EventBridge投遞到函數(shù)計算時,觸發(fā)器會自動觸發(fā)函數(shù)的執(zhí)行。
在函數(shù)詳情頁面的代碼頁簽,在代碼編輯器中編寫代碼,然后單擊部署代碼。
本文以Node.js函數(shù)代碼為例。
'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參數(shù),對event進行處理。 callback(null, 'return result'); }
測試函數(shù)。
方式一:如果您是配置函數(shù)入口參數(shù)
event
模擬事件源,單擊測試函數(shù)。方式二:登錄輕量消息隊列(原 MNS)控制臺,選擇您創(chuàng)建的目標隊列,點擊發(fā)送消息,如下圖。
執(zhí)行完成后,在實時日志查看結(jié)果。
更多信息
如需對創(chuàng)建的觸發(fā)器進行修改或刪除,具體操作,請參見觸發(fā)器管理。