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

Function Compute:RabbitMQトリガー

最終更新日:Sep 09, 2024

EventBridgeを使用してApsaraMQ for RabbitMQイベントソースをFunction Computeと統合した後、ApsaraMQ for RabbitMQトリガー (RabbitMQトリガー) は関連する関数をトリガーできます。 この関数は、ApsaraMQ for RabbitMQにパブリッシュされたメッセージに対してカスタム操作を実行するために使用できます。 このトピックでは、function ComputeコンソールでRabbitMQトリガーを作成し、関数入力パラメーターを設定し、コードを記述してテストする方法について説明します。

概要

Function Computeコンソールでトリガーの作成を指定すると、Function Computeはトリガー設定に基づいてEventBridgeリソースを作成します。 Function Computeは、メッセージをプッシュするためのイベントモードイベントストリームモードを提供します。 次の項目は、各モデルで作成できるリソースを示しています。

トリガーの作成後、Function Computeコンソールでトリガー情報を表示できます。 EventBridgeコンソールで、作成されたリソースに関する情報を表示することもできます。 トリガーソースとして使用されるApsaraMQ for RabbitMQインスタンスにメッセージが送信されると、関数の実行がトリガーされます。 異なるプッシュモデルは異なるパラメータをサポートします。 詳細については、「手順2: 関数の入力パラメーターの設定」をご参照ください。

  • イベントモード: 単一のメッセージがイベントパラメータとして関数に渡されます。 イベントはCloudEventsの仕様に従います。 メッセージコンテンツとCloudEventsの関係については、「手順2: 関数の入力パラメーターの設定」をご参照ください。

  • イベントストリームモード: バッチ設定に基づいて、1つ以上のメッセージがFunction Computeにプッシュされ、バッチ処理されます。 このモデルは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。

使用上の注意

  • トリガーソースであるApsaraMQ for RabbitMQインスタンスは、function Computeの関数と同じリージョンにある必要があります。

  • カスタムイベントバスの作成数とイベントルールの作成数が上限に達した場合、イベントモードのMessage Queue for RabbitMQトリガーは作成できません。

  • イベントストリームの作成数が上限に達した場合、イベントストリームモードのMessage Queue for RabbitMQトリガーは作成できません。

各リージョンでAlibaba Cloudアカウントを使用して作成できるリソース数の制限については、「制限」をご参照ください。

始める前に

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

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、管理する関数をクリックします。

  4. 関数の詳細ページで、[トリガー] タブをクリックし、[バージョンまたはエイリアス] ドロップダウンリストからバージョンまたはエイリアスを選択し、[トリガーの作成] をクリックします。

  5. [トリガーの作成] パネルで、関連パラメーターを指定します。 パラメーターを指定したら、[OK] をクリックします。

    次の表に、基本的なパラメーターを示します。

    パラメーター

    説明

    トリガータイプ

    ドロップダウンリストから [Message Queue for RabbitMQ] を選択します。

    Message Queue for RabbitMQ

    名前

    カスタムトリガー名を入力します。

    rabbitmq-trigger

    バージョンまたはエイリアス

    デフォルト値はLATESTです。 別のバージョンまたはエイリアスのトリガーを作成する場合は、関数の詳細ページの右上隅で、指定したバージョンまたはエイリアスに切り替えます。 サービスのバージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。

    LATEST

    RabbitMQインスタンス

    ApsaraMQ for RabbitMQインスタンスを選択します。

    amqp-cn-i7m2l6m2 ****

    Vhost

    ドロップダウンリストからApsaraMQ for RabbitMQインスタンスのvhostを選択します。

    myhost-1

    キュー

    ドロップダウンリストからApsaraMQ for RabbitMQインスタンスのキューを選択します。

    myqueue-1

    呼び出しメソッド

    関数呼び出しモードを選択します。

    有効な値:

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

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

    同期呼び出し

    メッセージプッシュモード

    メッセージデータをFunction Computeにプッシュするために使用される基本アプリケーションモード。

    有効な値:

    • イベントモード: 単一のメッセージがイベントパラメータとして関数に渡されます。 イベントはCloudEventsの仕様に従います。 メッセージコンテンツとCloudEventsの関係については、「パラメーター」をご参照ください。

    • イベントストリームモード: バッチ設定に基づいて、1つ以上のメッセージがFunction Computeにプッシュされ、バッチ処理されます。 このモデルは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。

    イベントモード

    トリガー状態

    作成直後にトリガーを有効にするかどうかを指定します。 デフォルトでは、[トリガーの有効化] が選択され、作成後にトリガーが有効になります。

    非該当

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

    トリガーが作成されると、[トリガー] タブに表示されます。 既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。

ステップ2: 関数の入力パラメータを設定する

ApsaraMQ for RabbitMQイベントソースは、入力パラメーターとして機能するeventの形式で関数に渡されます。 関数に手動でイベントを渡して、関数をトリガーし、関数のコードが正しいかどうかをテストすることもできます。

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

  2. Configure Test Parametersパネルで、Create New Test EventまたはModify Existing Test Eventタブをクリックし、Event Nameとイベントの内容を指定します。 パラメーターを指定したら、[OK] をクリックします。

    イベントモードのイベントのサンプルコード:

      {
        "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****"
            }
        }
        },
        {
        "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に配信されると、トリガーは関数の実行をトリガーします。

  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. コードタブでテスト機能をクリックします。

    関数の実行後、[コード] タブで結果を表示できます。

関連ドキュメント

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