すべてのプロダクト
Search
ドキュメントセンター

Function Compute:ApsaraMQ for RocketMQトリガー

最終更新日:Sep 30, 2024

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つのリージョンのトリガーに関連するリソースの制限については、「制限」をご参照ください。

始める前に

ステップ1: トリガーを作成する

ApsaraMQ for RocketMQインスタンスを作成した後、Function Computeコンソールにログインし、関数の詳細ページに移動し、[設定] タブをクリックし、[トリガー] ページの [トリガーの作成] をクリックします。 トリガーの作成後、[OK] をクリックします。 詳細は以下の図をご参照ください。

image

下表に、各パラメーターを説明します。

パラメーター

説明

消費者オフセット

ApsaraMQ for RocketMQがEventBridgeからメッセージのプルを開始するオフセットを指定します。 有効な値:

  • 最新のオフセット: 最新のオフセットからメッセージを消費します。

  • Earlest Offset: 最も早いオフセットからメッセージを消費します。

  • Timestamp: 指定されたタイムスタンプからメッセージを取得します。

最新のオフセット

呼び出しメソッド

関数の呼び出し方法を指定します。

ビジネス要件に基づいて、パラメーターを次のいずれかの値に設定します。

  • 同期呼び出し: このメソッドは、シーケンシャル呼び出しに適しています。 イベントまたはイベントのバッチが関数をトリガーすると、function Computeは関数を実行し、関数が次のイベントまたはイベントのバッチを処理する前に応答を待ちます。 同期呼び出しリクエストの最大ペイロードは32 MBです。 詳細については、「同期呼び出し」をご参照ください。

  • 非同期呼び出し: このメソッドを使用すると、イベントをすばやく消費できます。 イベントまたはイベントのバッチが関数をトリガーすると、function Computeはすぐに応答を返し、次のイベントまたはイベントのバッチの処理を続行します。 このプロセス中、関数は非同期モードで実行されます。 非同期呼び出しリクエストの最大ペイロードは128 KBです。 詳細については、「非同期呼び出し」をご参照ください。

同期呼び出し

プッシュ設定、再試行ポリシー、デットレターキューなどの高度な設定については、「トリガーの高度な機能」をご参照ください。

ステップ2: (オプション) 入力パラメーターの設定

ApsaraMQ for RocketMQは、入力パラメーターとしてeventの形式でイベントソースを関数に渡します。 コードを使用して、イベントを解析および処理できます。 eventを関数に手動で渡してトリガーイベントをシミュレートし、関数コードが正しいかどうかをテストできます。

  1. 関数の詳細ページの [コード] タブで、[テスト関数] の隣のimage.pngアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。

  2. [テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[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に配信されると、トリガーによって自動的に関数がトリガーされます。

  1. コード関数の詳細ページのタブで、コードエディターでコードを記述し、コードのデプロイをクリックします。

    次のサンプルコードは、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');
    }
  2. 関数をテストします。

    方法1: eventを設定してイベントソースをシミュレートする場合は、[Test Function] をクリックします。

    方法2: ApsaraMQ for RocketMQコンソールにログインし、作成したトピックを選択し、[メッセージの送信] をクリックします。 以下の図は一例です。

    image

  3. 実行が完了したら、結果をリアルタイムログで表示します。

    image

追加情報

既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。