自己管理型 Apache RocketMQ インスタンスを EventBridge 経由で Function Compute と統合すると、トリガーを使用して関数を呼び出すことができます。これにより、Apache RocketMQ に発行されたメッセージをカスタムコードで処理できます。このトピックでは、Function Compute コンソールで自己管理型 Apache RocketMQ インスタンスのトリガーを作成し、テストイベントを設定し、関数コードを記述してテストする方法について説明します。
背景情報
Function Compute コンソールでトリガーを作成すると、Function Compute はトリガーの設定に基づいて、対応する イベントストリーム を EventBridge に自動的に作成します。
トリガーが作成された後、Function Compute コンソールでその詳細を確認し、EventBridge コンソールで自動的に作成されたリソースを確認できます。ご利用の Apache RocketMQ インスタンスでメッセージがキューに入れられると、トリガーは関数を呼び出します。バッチ設定に基づいて、トリガーは1つまたは複数のメッセージイベントをバッチで関数にプッシュして処理します。
前提条件
EventBridge
Function Compute
Apache RocketMQ
自己管理型 Apache RocketMQ クラスターがデプロイされていること。
トピックが作成されていること。
コンシューマーグループが作成されました。
制限事項
イベントソースとして機能する Apache RocketMQ インスタンスは、パブリックインターネットまたは Alibaba Cloud VPC からアクセス可能である必要があります。
Apache RocketMQ インスタンスが VPC からアクセスされる場合、その VPC はご利用の関数と同じリージョンにある必要があります。
イベントストリームの数が上限に達すると、それ以上 Apache RocketMQ トリガーを作成することはできません。イベントストリームの上限に関する詳細については、「使用制限」をご参照ください。
ステップ 1: 自己管理型 Apache RocketMQ トリガーの作成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。関数 ページで、対象の関数をクリックします。
関数詳細ページで、トリガー タブをクリックし、トリガーの作成 をクリックします。
[トリガーの作成] パネルでパラメーターを設定し、OK をクリックします。
パラメーター
操作
例
トリガータイプ
自作 Apache RocketMQ を選択します。
自己管理型 Apache RocketMQ
名前
トリガーのカスタム名を入力します。
apache-rocketmq-trigger
バージョンまたはエイリアス
デフォルト値は LATEST です。特定のバージョンまたはエイリアスのトリガーを作成するには、まず関数詳細ページでそのバージョンまたはエイリアスに切り替える必要があります。詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
アクセスポイント
ご利用の Apache RocketMQ クラスターの NameServer アドレスを入力します。
192.168.X.X:9876
トピック
ご利用の Apache RocketMQ インスタンスのトピックを選択します。
testTopic
グループ ID
ご利用の Apache RocketMQ インスタンスのコンシューマーグループ ID を選択します。
testGroup
フィルタータイプ
メッセージフィルタリング方法を選択します。有効な値:
タグ:タグでメッセージをフィルタリングします。
SQL:SQL 式を使用してメッセージをフィルタリングします。これにより、メッセージのプロパティと値を照合できます。
タグ
フィルター
フィルタータイプ を選択した後、対応するフィルター式を指定します。
TagA
認証モード
認証モードを選択します。ACL のみがサポートされています。
ACL
ユーザー名
認証モード を ACL に設定した場合、認証用のユーザー名を入力します。
admin
パスワード
認証モード を ACL に設定した場合、認証用のパスワードを入力します。
******
コンシューマーオフセット
メッセージ消費の開始点を選択します。EventBridge はこのオフセットからメッセージをプルします。有効な値:
最新のオフセット:最新のオフセットから消費を開始します。
最初のオフセット:最古のオフセットから消費を開始します。
タイムスタンプ:特定の時点から消費を開始します。
最新のオフセット
ネットワーク設定
メッセージルーティングのネットワークタイプを選択します。有効な値:
インターネット:パブリックインターネット経由で Apache RocketMQ クラスターにアクセスします。
VPC:Alibaba Cloud VPC を介して Apache RocketMQ クラスターにアクセスします。VPC、vSwitch、および セキュリティグループ を選択する必要があります。
パブリックネットワーク
呼び出しメソッド
呼び出しメソッドを選択します。
有効な値:
同期呼び出し:これはデフォルトのメソッドです。イベントが関数をトリガーします。Function Compute は呼び出しが完了するのを待ってから、実行結果を返します。詳細については、「同期呼び出し」をご参照ください。
非同期呼び出し:このメソッドは、長時間実行される関数に適しています。イベントが関数をトリガーした後、Function Compute は即座に応答を返します。関数が少なくとも1回実行されることを保証しますが、実行結果は返しません。詳細については、「非同期呼び出しの概要」をご参照ください。
同期呼び出し
トリガーの有効化のステータス
トリガーが作成された直後に有効にするかどうかを指定します。このオプションはデフォルトで有効になっています。
トリガーを有効にする
プッシュ設定、リトライポリシー、デッドレターキューなどの詳細設定については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、トリガー タブに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ 2: テストイベントの設定
自己管理型 Apache RocketMQ イベントソースは、イベント を入力パラメーターとして関数に渡します。手動で イベント を関数に渡して、イベントトリガーをシミュレートできます。
関数の詳細ページの [コード] タブで、[テスト関数] の横にある
アイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。テストパラメーターの設定 パネルで、新規テストイベントの作成 または 既存のテストイベントの変更 を選択します。イベント名を入力し、イベント内容を提供してから、[OK] をクリックします。
イベント は次のフォーマットです。
[ { "msgId": "7F0000010BDD2A84AEE70DA49B57****", "topic": "testTopic", "systemProperties": { "UNIQ_KEY": "7F0000010BDD2A84AEE70DA49B57****", "CLUSTER": "DefaultCluster", "MIN_OFFSET": "0", "TAGS": "TagA", "MAX_OFFSET": "128" }, "userProperties": {}, "body": "Hello RocketMQ" } ]イベント フィールドのパラメーターは、次の表で説明します。
パラメーター
タイプ
例
説明
msgIdString
7F0000010BDD2A84AEE70DA49B57****
Apache RocketMQ からのメッセージ ID。
topicString
testTopic
トピック名。
systemPropertiesMap
システムプロパティ。
UNIQ_KEYString
7F0000010BDD2A84AEE70DA49B57****
メッセージの一意キー。
CLUSTERString
DefaultCluster
Apache RocketMQ クラスターの名前。
MIN_OFFSETInteger
0
最小オフセット。
MAX_OFFSETInteger
128
最大オフセット。
TAGSString
TagA
フィルタータグ。
userPropertiesMap
なし
ユーザー定義プロパティ。
bodyString
Hello RocketMQ
メッセージ本文。
ステップ 3: 関数コードの記述とテスト
トリガーを作成した後、関数コードを記述してテストできます。実際のシナリオでは、Apache RocketMQ がメッセージを受信すると、トリガーが自動的に関数を呼び出します。
関数詳細ページで、コード タブをクリックします。エディターでコードを記述し、デプロイメントコード をクリックします。
このトピックでは、Node.js を例として使用します。以下はコードサンプルです。
'use strict'; /* 初期化機能を有効にするには、 次のように initializer 関数を実装します: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // イベントパラメーターを解析し、イベントを処理します。 callback(null, 'return result'); }関数のテスト をクリックします。
詳細情報
Function Compute コンソールに加えて、次の方法でトリガーを設定することもできます:
Serverless Devs ツールを使用してトリガーを設定します。詳細については、「Serverless Devs の共通コマンド」をご参照ください。
SDK を使用してトリガーを設定します。詳細については、「SDK」をご参照ください。
トリガーを変更または削除するには、「トリガーの管理」をご参照ください。