路由到輕量消息隊列(原 MNS)
您可以通過事件規(guī)則過濾事件,將事件路由到輕量消息隊列(原 MNS)的隊列。本文以自定義事件為例介紹將事件路由到輕量消息隊列(原 MNS)的前提條件、操作步驟和結(jié)果驗證。
前提條件
事件總線EventBridge
輕量消息隊列(原 MNS)
步驟一:添加自定義事件源
- 登錄事件總線EventBridge控制臺,在左側(cè)導航欄,單擊事件總線。
- 在頂部菜單欄,選擇地域,在事件總線頁面,單擊目標自定義事件總線名稱。
- 在左側(cè)導航欄,單擊事件源,然后單擊添加事件源。
- 在添加自定義事件源面板,輸入名稱和描述,事件提供方選擇自定義應(yīng)用,然后單擊確定。
步驟二:創(chuàng)建事件規(guī)則
目標服務(wù)和事件規(guī)則必須處于同一地域。
- 登錄事件總線EventBridge控制臺。
- 在左側(cè)導航欄,單擊事件總線。
- 在頂部菜單欄,選擇地域。
- 在事件總線頁面,單擊目標總線名稱。
- 在左側(cè)導航欄,單擊事件規(guī)則。
在事件規(guī)則頁面,單擊創(chuàng)建規(guī)則。
在創(chuàng)建規(guī)則頁面,完成以下操作。
在配置基本信息配置向?qū)В?b data-tag="uicontrol" id="uicontrol-pbe-nzi-035" class="uicontrol">名稱文本框輸入規(guī)則名稱,在描述文本框輸入規(guī)則的描述,然后單擊下一步。
在配置事件模式配置向?qū)В?b data-tag="uicontrol" id="uicontrol-a5b-tc6-toc" class="uicontrol">事件源類型選擇自定義事件源,事件源選擇步驟一添加的自定義事件源,在事件模式內(nèi)容代碼框輸入事件模式,然后單擊下一步。
如需了解更多信息,請參見事件模式。
在配置事件目標配置向?qū)В渲檬录繕耍缓髥螕?b data-tag="uicontrol" id="uicontrol-urz-mz2-rqz" class="uicontrol">創(chuàng)建。
說明1個事件規(guī)則最多可以添加5個目標。
服務(wù)類型:單擊輕量消息隊列(原 MNS)。
隊列:選擇已創(chuàng)建的隊列。
消息內(nèi)容:單擊模板。
以下提供變量和模板的示例。
變量示例:
{ "source":"$.source" }
模板示例:
The event comes from ${source} is abnormal.
如需了解更多信息,請參見事件內(nèi)容轉(zhuǎn)換。
步驟三:發(fā)布事件
- 登錄事件總線EventBridge控制臺,在左側(cè)導航欄,單擊事件總線。
- 在頂部菜單欄,選擇地域。
- 在事件總線頁面,找到目標總線,在其右側(cè)操作列單擊發(fā)布事件。說明 僅自定義事件總線支持通過控制臺發(fā)布事件。
- 在發(fā)布事件至自定義事件總線面板,自定義事件源下拉列表選擇已創(chuàng)建的自定義事件源,在事件體代碼框輸入事件內(nèi)容,然后單擊確定。事件包含的參數(shù)規(guī)范,請參見事件概述。
結(jié)果驗證
您可以在輕量消息隊列(原 MNS)控制臺確認是否接收到事件。
在左側(cè)導航欄,單擊隊列列表。
在頂部菜單欄,選擇地域。
在隊列列表頁面,找到目標隊列,在其右側(cè)操作列選擇 。
在隊列收發(fā)消息快速體驗頁面的接收消息區(qū)域,單擊接收消息。
重要通過輕量消息隊列(原 MNS)的Java SDK接收投遞過來的事件時,由于消息的Body沒有經(jīng)過Base64編碼,會導致接收到的消息為亂碼。因此,需要使用getMessageBodyAsRawBytes或者getMessageBodyAsRawString來獲取事件的Body。
接收到的示例消息內(nèi)容如下所示。
{ "id":"22h0iaji-8cf5-2iea-j4a6-i99a5j1a****", "source":"acs.oss", "specversion":"1.0", "type":"oss:ObjectCreated:PostObject", "datacontenttype":"application/json;charset=utf-8", "dataschema":"http://example.com/item.json", "subject":"acs:oss:cn-hangzhou:<yourAccountId>:xls-papk/game_apk/123.jpg", "aliyunaccountid":"165228866041****", "aliyunpublishtime":"2020-10-14T17:00:03.628Asia/Shanghai", "aliyuneventbusname":"MyEventBus", "aliyunpublishaddr":"10.0.XX.XX", "data":{ "name":"Eventbridge", "number":100 } }