Apache RocketMQ をイベントソースとして使用し、EventBridge を介して Function Compute と統合できます。その後、Apache RocketMQ トリガーを使用して関連付けられた関数を呼び出すことができます。これにより、Apache RocketMQ に発行されたメッセージをカスタムロジックで処理できます。このトピックでは、Function Compute コンソールで Apache RocketMQ トリガーを作成し、入力パラメーターを設定し、コードを記述してテストする方法について説明します。
背景
Function Compute コンソールでトリガーを作成すると、Function Compute はトリガー設定に基づいて EventBridge に イベントストリームリソースを自動的に作成します。
トリガーが作成された後、Function Compute コンソールでその情報を表示できます。EventBridge コンソールで自動的に作成されたリソースを表示することもできます。メッセージが Apache RocketMQ の Topic に発行されると、関数がトリガーされます。バッチ設定に基づいて、1 つ以上のメッセージイベントがバッチで関数にプッシュされます。
前提条件
EventBridge
Function Compute
Apache RocketMQ
自己管理型の Apache RocketMQ クラスターが作成されていること。
Topic が作成されていること。
使用者グループが作成されていること。
制限
イベントソースとして機能する Apache RocketMQ クラスターは、インターネット経由または Alibaba Cloud VPC (VPC) 内からアクセスできる必要があります。
Apache RocketMQ クラスターが VPC 内からアクセス可能な場合、VPC タイプのインスタンスと Function Compute 関数は同じリージョンにある必要があります。
作成されたイベントストリームの数が上限に達した場合、Apache RocketMQ トリガーを作成することはできません。イベントストリームの数の制限に関する詳細については、「制限」をご参照ください。
ステップ 1: Apache RocketMQ トリガーの作成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。[Functions] ページで、対象の関数をクリックします。
関数の詳細ページで、[Triggers] タブをクリックし、[Create Trigger] をクリックします。
[Create Trigger] パネルでパラメーターを設定し、[OK] をクリックします。
パラメーター
手順
例
トリガータイプ
[自己管理型 Apache RocketMQ] を選択します。
自己管理型 Apache RocketMQ
名前
トリガーのカスタム名を入力します。
apache-rocketmq-trigger
バージョンまたはエイリアス
デフォルト値は [LATEST] です。別のバージョンまたはエイリアスのトリガーを作成するには、関数の詳細ページの右上隅でそのバージョンまたはエイリアスに切り替えます。バージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
エンドポイント
クラスターの NameServer アドレスを入力します。
192.168.X.X:9876
Topic
作成した Apache RocketMQ インスタンスの Topic を選択します。
testTopic
グループ ID
作成した Apache RocketMQ インスタンスの使用者グループ ID を選択します。
testGroup
フィルタータイプ
メッセージのフィルタリングタイプを選択します。有効な値:
Tag: タグでメッセージをフィルターします。
SQL: SQL 文でメッセージをフィルターします。メッセージのプロパティとプロパティ値を照合できます。
Tag
フィルター
[フィルタータイプ] を選択した後、対応するフィルターステートメントを設定します。
TagA
認証モード
認証モードを選択します。[ACL] モードがサポートされています。
ACL
ユーザー名
[認証モード] を [ACL] に設定した場合は、ID 検証のために Apache RocketMQ のユーザー名を設定します。
admin
パスワード
[認証モード] を [ACL] に設定した場合は、ID 検証のために Apache RocketMQ のパスワードを設定します。
******
コンシューマオフセット
コンシューマオフセットを選択します。これは、EventBridge がメッセージのプルを開始する位置を指定します。有効な値:
[最新のオフセット]: 最新のオフセットからメッセージを消費します。
[最も古いオフセット]: 最も古いオフセットからメッセージを消費します。
[タイムスタンプ]: 指定した時点からメッセージを消費します。
最新のオフセット
ネットワーク設定
メッセージルーティングのネットワークタイプを選択します。有効な値:
[インターネット]: インターネット経由で Apache RocketMQ クラスターにアクセスします。
[VPC]: Alibaba Cloud VPC を介して Apache RocketMQ クラスターにアクセスします。対応する [VPC]、[VSwitch]、および [セキュリティグループ] を選択する必要があります。
インターネット
呼び出しモード
関数の呼び出しモードを選択します。
有効な値:
同期
トリガーの状態
作成直後にトリガーを有効にするかどうかを指定します。デフォルトでは、このオプションが選択されており、作成直後にトリガーが有効になることを意味します。
トリガーを有効にする
プッシュ設定、リトライ、デッドレターキューなどの詳細設定については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、[Triggers] タブに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ 2: 関数の入力パラメーターの設定
自己管理型の Apache RocketMQ イベントソースは、[event] を入力パラメーターとして関数に渡します。手動で [event] を関数に渡して、トリガーイベントをシミュレートできます。
関数詳細ページの [コード] タブで、[関数をテスト] の横にある
アイコンをクリックし、ドロップダウンリストから [テストパラメーターを設定] を選択します。[Configure Test Parameters] パネルで、[Create New Test Event] または [Edit Existing Test Event] を選択し、イベント名とイベント内容を入力して、[OK] をクリックします。
[event] のフォーマットは次のとおりです。
[ { "msgId": "7F0000010BDD2A84AEE70DA49B57****", "topic": "testTopic", "systemProperties": { "UNIQ_KEY": "7F0000010BDD2A84AEE70DA49B57****", "CLUSTER": "DefaultCluster", "MIN_OFFSET": "0", "TAGS": "TagA", "MAX_OFFSET": "128" }, "userProperties": {}, "body": "Hello RocketMQ" } ][event] のパラメーターは次の表のとおりです。
パラメーター
タイプ
例
説明
msgId
String
7F0000010BDD2A84AEE70DA49B57****
Apache RocketMQ メッセージの ID。
topic
String
testTopic
Topic 名。
systemProperties
Map
システムプロパティ。
UNIQ_KEY
String
7F0000010BDD2A84AEE70DA49B57****
メッセージの一意のキー。
CLUSTER
String
DefaultCluster
Apache RocketMQ クラスターの名前。
MIN_OFFSET
Int
0
最小オフセット。
MAX_OFFSET
Int
128
最大オフセット。
TAGS
String
TagA
フィルタープロパティ。
userProperties
Map
なし
ユーザープロパティ。
body
String
Hello RocketMQ
メッセージの内容。
ステップ 3: 関数コードの記述とテスト
トリガーを作成した後、関数コードを記述してテストし、それが正しいことを確認できます。本番環境では、Apache RocketMQ がメッセージを受信するたびに、トリガーが自動的に関数を呼び出します。
関数の詳細ページで、[Code] タブをクリックします。コードエディタでコードを記述し、[Deploy Code] をクリックします。
このトピックでは、Node.js コードを例として使用します。サンプルコードは次のとおりです。
'use strict'; /* イニシャライザ機能を有効にするには、 次のように initializer 関数を実装します: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // event パラメーターを解析し、イベントを処理します。 callback(null, 'return result'); }[Test Function] をクリックします。
詳細情報
Function Compute コンソールに加えて、次の方法でトリガーを設定することもできます:
Serverless Devs ツールを使用してトリガーを設定します。詳細については、「Serverless Devs の一般的なコマンド」をご参照ください。
SDK を使用してトリガーを設定します。詳細については、「SDK」をご参照ください。
トリガーを変更または削除するには、「トリガーの管理」をご参照ください。