EventBridgeを使用してApsaraMQ for RabbitMQをイベントソースとしてFunction Computeと統合した後、ApsaraMQ for RabbitMQトリガーを使用して関連する関数の実行をトリガーし、ApsaraMQ for RabbitMQにパブリッシュされたメッセージに対してカスタム操作を実行できます。 このトピックでは、ApsaraMQ for RabbitMQキュートリガーの作成、関連する関数の入力パラメーターの設定、関数コードの記述、およびFunction Computeコンソールでの関数のテスト方法について説明します。
概要
Function Computeコンソールでトリガーを作成するリクエストを送信すると、Function Computeはトリガーの設定に基づいてEventBridgeにイベントストリームを自動的に作成します。 詳細については、「概要」をご参照ください。
トリガーの作成後、Function Computeコンソールでトリガーに関する情報を表示できます。 EventBridgeコンソールで、作成されたリソースに関する情報を表示することもできます。 メッセージがソースApsaraMQ for RabbitMQインスタンスにエンキューされると、function Computeの関連関数がトリガーされます。 関数の実行中、メッセージイベントは関数にプッシュされ、バッチ構成に基づいて個別にまたはバッチで処理されます。 ApsaraMQ for RabbitMQトリガーは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。
制限事項
トリガーソースとして使用されるApsaraMQ for RabbitMQインスタンスは、Function Compute関数と同じリージョンに存在する必要があります。
作成されたイベントストリームの数が上限に達すると、ApsaraMQ for RabbitMQトリガーを作成できなくなります。
各Alibaba Cloudアカウントの1つのリージョンのトリガーに関連するリソースの制限については、「制限」をご参照ください。
始める前に
EventBridge
Function Compute
ApsaraMQ for RabbitMQ
ステップ1: トリガーを作成する
ApsaraMQ for RabbitMQキューを作成したら、Function Computeコンソールにログインし、関数の詳細ページに移動して [設定] タブをクリックし、トリガーページの [トリガーの作成] をクリックしてトリガーを作成します。 トリガーの作成後、[OK] をクリックします。 詳細は以下の図をご参照ください。
下表に、各パラメーターを説明します。
呼び出しメソッド
同期呼び出し: このメソッドは、シーケンシャル呼び出しに適しています。 イベントまたはイベントのバッチが関数をトリガーすると、function Computeは関数を実行し、関数が次のイベントまたはイベントのバッチを処理する前に応答を待ちます。 同期呼び出しリクエストの最大ペイロードは32 MBです。 詳細については、「同期呼び出し」をご参照ください。
非同期呼び出し: このメソッドを使用すると、イベントをすばやく消費できます。 イベントまたはイベントのバッチが関数を呼び出すと、function Computeはすぐに応答を返し、次のイベントまたはイベントのバッチの処理を続行します。 このプロセス中、関数は非同期モードで実行されます。 非同期呼び出しリクエストの最大ペイロードは128 KBです。 詳細については、「非同期呼び出し」をご参照ください。
プッシュ設定、再試行ポリシー、デットレターキューなどの高度な設定については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、[トリガー] タブに表示されます。 トリガーを変更または削除するには、「トリガー管理」をご参照ください。
ステップ2: (オプション) 入力パラメーターの設定
ApsaraMQ for RabbitMQは、入力パラメーターとしてevent
の形式でイベントソースを関数に渡します。 コードを使用して、イベントを解析および処理できます。 event
を関数に手動で渡してトリガーイベントをシミュレートし、関数コードが正しいかどうかをテストできます。
関数の詳細ページの [コード] タブで、[テスト関数] の隣のアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[OK] をクリックします。
event
のサンプルコード:[ { "id":"bj694332-4cj1-389e-9d8c-b137h30b****", "source":"RabbitMQ-Function-rabbitmq-trigger", "specversion":"1.0", "type":"amqp:Queue:SendMessage", "datacontenttype":"application/json;charset=utf-8", "subject":"acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping", "time":"2021-08-12T06:56:40.709Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T08:58:55.140Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RabbitMQ-Function-rabbitmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "envelope":{ "deliveryTag":98, "exchange":"", "redeliver":false, "routingKey":"housekeeping" }, "body":{ "Hello":"RabbitMQ" }, "props":{ "contentEncoding":"UTF-8", "messageId":"f7622d51-e198-41de-a072-77c1ead7****" } } }, { "id":"bj694332-4cj1-389e-9d8c-b137h30b****", "source":"RabbitMQ-Function-rabbitmq-trigger", "specversion":"1.0", "type":"amqp:Queue:SendMessage", "datacontenttype":"application/json;charset=utf-8", "subject":"acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping", "time":"2021-08-12T06:56:40.709Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T08:58:55.140Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RabbitMQ-Function-rabbitmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "envelope":{ "deliveryTag":98, "exchange":"", "redeliver":false, "routingKey":"housekeeping" }, "body":{ "Hello":"RabbitMQ" }, "props":{ "contentEncoding":"UTF-8", "messageId":"f7622d51-e198-41de-a072-77c1ead7****" } } } ]
次の表に、dataに含まれるパラメーターを示します。 CloudEvents仕様で定義されているパラメーターについては、「概要」をご参照ください。
パラメーター
データ型
例
説明
ボディ
地図
メッセージ本文。
こんにちは
String
EventBridge
ユーザーデータ。
小道具
地図
メッセージ属性。
contentEncoding
String
utf-8
メッセージ本文がエンコードされる形式。
messageId
String
f7622d51-e198-41de-a072-77c1ead7 ****
メッセージ ID 各メッセージのIDは一意である。
封筒
地図
メッセージエンベロープに関する情報。
deliveryTag
Int
98
メッセージタグ。
交換
String
なし
メッセージを送信する取引所の名前。
再配信
Boolean
false
メッセージを再送信できるかどうかを指定します。 有効な値:
true
false
routingKey
String
ハウスキーピング
メッセージのルーティングルール。
ステップ3: 関数コードを記述し、関数をテストする
トリガーの作成後、関数コードを記述し、関数をテストして、コードが正しいかどうかを確認できます。 ApsaraMQ for RabbitMQによって生成されたイベントが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 RabbitMQコンソールにログインし、作成したトピックを選択し、[メッセージの送信] をクリックします。 以下の図は一例です。
実行が完了したら、結果をリアルタイムログで表示します。
詳細情報
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。