イベントルールを使用して、イベントをフィルターし、Message Queue for Apache RocketMQ にルーティングします。本トピックでは、カスタムイベントを例として、前提条件、操作手順、および検証方法について説明します。
前提条件
-
EventBridge
-
Message Queue for Apache RocketMQ
ステップ 1:カスタムイベントソースの追加
- EventBridge コンソールにログインします。左側のナビゲーションウィンドウで、[Event Buses] をクリックします。
- 上部のナビゲーションバーでリージョンを選択します。[Event Buses] ページで、対象のカスタムイベントバスをクリックします。
- 左側のナビゲーションウィンドウで、[Event Sources] をクリックし、次に [Add Event Source] をクリックします。
-
カスタムイベントソースの追加 パネルで、Name と Description を入力します。イベントプロバイダー には イベントプロバイダー を選択し、OK をクリックします。
ステップ 2:イベントルールの作成
EventBridge コンソールにログインします。
左側のナビゲーションウィンドウで、[Event Buses] をクリックします。
上部のナビゲーションバーでリージョンを選択します。
[Event Buses] ページで、管理対象のイベントバスの名前をクリックします。
左側のナビゲーションウィンドウで、[Event Rules] をクリックします。
- イベントルール ページで、ルールの作成 をクリックします。
- ルールの作成 ページで、次の手順を実行します。
- 基本情報の設定 ステップで、ルールの 名前 と Description を入力し、次へ をクリックします。
- イベントパターンの設定 ステップで、イベントソースタイプ を カスタムイベントソース に設定し、イベントソース ドロップダウンリストからステップ 1 で作成したカスタムイベントソースを選択します。パターン内容 のコードエディタにイベントパターンを入力し、次へ をクリックします。
詳細については、「イベントパターン」をご参照ください。
- イベントターゲットの設定 ステップで、イベントターゲットを設定し、作成 をクリックします。
説明 1 つのイベントルールに設定できるイベントターゲットの最大値は 5 です。
Message Queue for Apache RocketMQ をイベントターゲットとして設定する際に使用可能なパラメーターは以下のとおりです。
パラメーター 説明 サービスタイプ ApsaraMQ for RocketMQ を選択します。 インスタンス ID 作成済みの ApsaraMQ for RocketMQ インスタンスを選択します。 Topic 作成済みのトピックを選択します。 メッセージ本文 EventBridge は JSONPath 式を使用して、メッセージ本文用のイベントコンテンツを抽出します。 部分イベント
$.data.bodyカスタムプロパティ (Properties) EventBridge は JSONPath 式を使用してイベントから変数を定義し、テンプレートを使用してカスタムプロパティを作成します。 テンプレート
変数:
テンプレート:{ "userProperties":"$.data.userProperties", "msgId":"$.data.systemProperties.UNIQ_KEY" }{ "EB_SYS_EMBED_OBJECT":"${userProperties}", "UNIQ_KEY":"${msgId}" }メッセージインデックス (Keys) EventBridge は JSONPath 式を使用して、メッセージキー用のイベントコンテンツを抽出します。 部分イベント
$.data.systemProperties.KEYS[Tags] EventBridge は JSONPath 式を使用して、メッセージタグ用のイベントコンテンツを抽出します。 部分イベント
$.data.systemProperties.TAGSEventBridge はイベントコンテンツに対して複数の変換タイプをサポートしています。詳細については、「イベント変換」をご参照ください。例を以下に示します。
- 一部のイベント の例:
$.data.body - Constant の例:
Warning! - 変数 および テンプレート の例:
変数 の例:
{ "type":"$.type" }テンプレート の例:
The event type is ${type}.
- 一部のイベント の例:
ステップ 3:イベントの公開
EventBridge コンソールにログインします。
左側のナビゲーションウィンドウで、[Event Buses] をクリックします。
上部のナビゲーションバーでリージョンを選択します。
[Event Buses] ページで、対象のイベントバスを見つけ、操作 列の イベントのパブリッシュ をクリックします。
説明EventBridge コンソールでは、カスタムイベントバスへのイベント公開のみがサポートされています。
[Publish Event To Custom Event Bus] パネルで、次の設定を行います。
設定 説明 カスタムイベントソース ドロップダウンリストから既存のカスタムイベントソースを選択します。 イベント本体 イベントの内容を入力します。 OK をクリックします。
検証
イベントが受信されたことを確認するには、Message Queue for Apache RocketMQ コンソールでメッセージをクエリします。
ApsaraMQ for RocketMQ コンソールにログインします。
左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーでリージョン(例:中国 (杭州))を選択します。
- インスタンスリスト ページで対象のインスタンスを見つけ、Actions 列で、 を選択します。
- メッセージ検索 ページで、照会方法: を [By Topic] に設定し、クエリ対象のトピックを選択します。時間範囲 を指定し、検索 をクリックします。
受信したメッセージの例を以下に示します。
{
"id":"94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source":"acs:mq",
"specversion":"1.0",
"type":"mq:Topic:SendMessage",
"datacontenttype":"application/json; charset=utf-8",
"subject":"acs:mq:cn-hangzhou:123456789098****:MQ_INST_123456789098****_BXhFHryi%TopicName",
"time":"2021-04-08T06:01:20.766Z",
"aliyunpublishtime":"2021-04-08T06:01:20.725Z",
"aliyuneventbusname":"BusName",
"data":{
"topic":"TopicName",
"systemProperties":{
"MIN_OFFSET":"0",
"TRACE_ON":"true",
"MAX_OFFSET":"8",
"MSG_REGION":"cn-hangzhou",
"KEYS":"systemProperties.KEYS",
"CONSUME_START_TIME":1628577790396,
"UNIQ_KEY":"AC14C305069E1B28CDFA3181CDA2****",
"TAGS":"systemProperties.TAGS",
"INSTANCE_ID":"MQ_INST_123456789098****_BXhFHryi"
},
"userProperties":{
},
"body":"TEST"
}
}