EventBridgeを使用してApsaraMQ for RocketMQをイベントソースとしてFunction Computeと統合した後、ApsaraMQ for RocketMQトリガーを使用して関連する関数の実行をトリガーし、ApsaraMQ for RocketMQにパブリッシュされたメッセージに対してカスタム操作を実行できます。 このトピックでは、ApsaraMQ for RocketMQトリガーの作成、関連する関数の入力パラメーターの設定、関数コードの記述、およびFunction Computeコンソールでの関数のテスト方法について説明します。
概要
Function Computeコンソールでトリガーを作成するリクエストを送信すると、Function Computeはトリガーの設定に基づいてEventBridgeにイベントストリームを自動的に作成します。 詳細については、「概要」をご参照ください。
トリガーの作成後、Function Computeコンソールでトリガーに関する情報を表示できます。 EventBridgeコンソールで、作成されたリソースに関する情報を表示することもできます。 メッセージがソースApsaraMQ for RocketMQインスタンスにエンキューされると、Function Computeの関連付けられた関数がトリガーされます。 関数の実行中、メッセージイベントは関数にプッシュされ、バッチ設定に基づいて個別にまたはバッチで処理されます。 ApsaraMQ for RocketMQトリガーは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。
使用上の注意
トリガーソースとして使用されるApsaraMQ for RocketMQインスタンスは、Function Compute関数と同じリージョンに存在する必要があります。
作成されたイベントストリームの数が上限を超えると、ApsaraMQ for RocketMQトリガーを作成できなくなります。
各Alibaba Cloudアカウントの1つのリージョンのトリガーに関連するリソースの制限については、「制限」をご参照ください。
始める前に
EventBridge
Function Compute
ApsaraMQ for RocketMQ
ステップ1: トリガーを作成する
ApsaraMQ for RocketMQインスタンスを作成した後、Function Computeコンソールにログインし、関数の詳細ページに移動し、[設定] タブをクリックし、[トリガー] ページの [トリガーの作成] をクリックします。 トリガーの作成後、[OK] をクリックします。 詳細は以下の図をご参照ください。
下表に、各パラメーターを説明します。
パラメーター | 説明 | 例 |
消費者オフセット | ApsaraMQ for RocketMQがEventBridgeからメッセージのプルを開始するオフセットを指定します。 有効な値:
| 最新のオフセット |
呼び出しメソッド | 関数の呼び出し方法を指定します。 ビジネス要件に基づいて、パラメーターを次のいずれかの値に設定します。
| 同期呼び出し |
プッシュ設定、再試行ポリシー、デットレターキューなどの高度な設定については、「トリガーの高度な機能」をご参照ください。
ステップ2: (オプション) 入力パラメーターの設定
ApsaraMQ for RocketMQは、入力パラメーターとしてevent
の形式でイベントソースを関数に渡します。 コードを使用して、イベントを解析および処理できます。 event
を関数に手動で渡してトリガーイベントをシミュレートし、関数コードが正しいかどうかをテストできます。
関数の詳細ページの [コード] タブで、[テスト関数] の隣のアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[OK] をクリックします。
event
のサンプルコード:[ { "id":"94ebc15f-f0db-4bbe-acce-56fb72fb****", "source":"RocketMQ-Function-rocketmq-trigger", "specversion":"1.0", "type":"mq:Topic:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName", "time":"2021-04-08T06:01:20.766Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T02:05:16.791Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RocketMQ-Function-rocketmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "topic":"TopicName", "systemProperties":{ "MIN_OFFSET":"0", "TRACE_ON":"true", "MAX_OFFSET":"8", "MSG_REGION":"cn-hangzhou", "KEYS":"systemProperties.KEYS", "CONSUME_START_TIME":1628577790396, "TAGS":"systemProperties.TAGS", "INSTANCE_ID":"MQ_INST_164901546557****_BXhFHryi" }, "userProperties":{ }, "body":"TEST" } }, { "id":"94ebc15f-f0db-4bbe-acce-56fb72fb****", "source":"RocketMQ-Function-rocketmq-trigger", "specversion":"1.0", "type":"mq:Topic:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName", "time":"2021-04-08T06:01:20.766Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T02:05:16.791Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RocketMQ-Function-rocketmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "topic":"TopicName", "systemProperties":{ "MIN_OFFSET":"0", "TRACE_ON":"true", "MAX_OFFSET":"8", "MSG_REGION":"cn-hangzhou", "KEYS":"systemProperties.KEYS", "CONSUME_START_TIME":1628577790396, "TAGS":"systemProperties.TAGS", "INSTANCE_ID":"MQ_INST_164901546557****_BXhFHryi" }, "userProperties":{ }, "body":"TEST" } } ]
次の表に、dataに含まれるパラメーターを示します。 CloudEvents仕様で定義されているパラメーターについては、「概要」をご参照ください。
パラメーター
データ型
例
説明
トピック
String
TopicName
トピック名。
systemProperties
地図
システムのプロパティ。
MIN_OFFSET
Int
0
最も早いオフセット。
TRACE_ON
Boolean
true
メッセージトレースが存在するかどうかを示します。 有効な値:
true
false
MAX_OFFSET
Int
8
最新のオフセット。
MSG_地域
String
cn-hangzhou
メッセージの送信元のリージョン。
キー
String
systemProperties.KEYS
メッセージのフィルタリングに使用されるキー。
CONSUME_START_TIME
Long
1628577790396
メッセージ消費の開始時刻。 単位:ミリ秒。
UNIQ_KEY
String
AC14C305069E1B28CDFA3181CDA2 ****
メッセージの一意のキー。
タグ
String
systemProperties.TAGS
メッセージのフィルタリングに使用されるタグ。
INSTANCE_ID
String
MQ_INST_123456789098 ****_BXhFHryi
ApsaraMQ for RocketMQインスタンスのID。
userProperties
地図
なし
ユーザーのプロパティ。
ボディ
String
TEST
メッセージ本文。
ステップ3: 関数コードを記述し、関数をテストする
トリガーの作成後、関数コードを記述し、関数をテストして、コードが正しいかどうかを確認できます。 ApsaraMQ for RocketMQによって生成されたイベントがEventBridgeを使用してFunction Computeに配信されると、トリガーによって自動的に関数がトリガーされます。
コード関数の詳細ページのタブで、コードエディターでコードを記述し、コードのデプロイをクリックします。
次のサンプルコードは、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); // Parse the event parameters and process the event. callback(null, 'return result'); }
関数をテストします。
方法1:
event
を設定してイベントソースをシミュレートする場合は、[Test Function] をクリックします。方法2: ApsaraMQ for RocketMQコンソールにログインし、作成したトピックを選択し、[メッセージの送信] をクリックします。 以下の図は一例です。
実行が完了したら、結果をリアルタイムログで表示します。
追加情報
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。