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

Function Compute:RabbitMQ トリガー

最終更新日:Apr 01, 2026

ApsaraMQ for RabbitMQ トリガーを使用すると、メッセージが RabbitMQ キューに入るたびに Function Compute の関数を実行できます。この統合により、メッセージは EventBridge を介してルーティングされるため、ポーリングインフラストラクチャを管理することなく、メッセージを個別またはバッチで処理できます。

仕組み

Function Compute コンソールで ApsaraMQ for RabbitMQ トリガーを作成すると、Function Compute は EventBridge にイベントストリームを自動的に作成します。メッセージがソースの RabbitMQ インスタンスのキューに追加されると、EventBridge はそれを CloudEvents フォーマットのイベントとして関数に配信します。メッセージは、バッチ設定に応じて、一度に 1 つずつ、またはバッチで関数にプッシュされます。

トリガーは Function Compute コンソールで、対応するイベントストリームリソースは EventBridge コンソールで表示できます。

ApsaraMQ for RabbitMQ トリガーは、エンドツーエンドのストリーミングデータ処理シナリオに適しています。

制限事項

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

  • ご利用のアカウントのイベントストリーム数がクォータに達した場合、追加のトリガーを作成することはできません。クォータの詳細については、「使用制限」をご参照ください。

前提条件

開始する前に、以下が準備できていることを確認してください。

ステップ 1:トリガーの作成

  1. Function Compute コンソールにログインし、関数の詳細ページに移動します。

  2. [設定]」タブをクリックし、次に「トリガー ページ」で「[トリガーの作成]」をクリックします。

  3. トリガーパラメーターを設定します。次の図は設定パネルを示しています。

    image

  4. [OK] をクリックします。

呼び出しメソッド

メッセージが到着したときに関数を呼び出す方法を Function Compute で選択します。

メソッド最大ペイロード動作使用するケース
同期呼び出し32 MB一度に 1 つのイベントまたはバッチを処理します。関数が戻るのを待ってから次を処理します順序が重要なシーケンシャル処理
非同期呼び出し128 KBすぐに戻り、次のイベントまたはバッチに進みます。関数はバックグラウンドで実行されますシーケンシャル処理よりも消費速度が重要な高スループットのシナリオ

詳細については、「同期呼び出し」および「非同期呼び出し」をご参照ください。

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

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

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

ApsaraMQ for RabbitMQ は、メッセージを event 配列として関数に渡します。実際のメッセージを送信せずに関数コードをテストするには、手動でイベントをシミュレートします。

  1. [コード] タブで、[テスト関数] の横にある image.png アイコンをクリックし、[テストパラメーターの設定] を選択します。

  2. [テストパラメータの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] をクリックし、イベント名と以下のイベント内容を入力してから、[OK] をクリックします。

以下は、2 つのメッセージを含む 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****"
      }
    }
  }
]

外側の配列には、バッチ内のメッセージごとに 1 つのオブジェクトが含まれます。トップレベルのフィールドは、CloudEvents 仕様に従います。data フィールドには、RabbitMQ 固有のコンテンツが含まれます。

`data` フィールドのパラメーター

パラメータータイプ説明
bodyMapユーザー定義のコンテンツを含むメッセージ本文
HelloStringEventBridgeメッセージ本文内のユーザーデータ
propsMapメッセージ属性
contentEncodingStringutf-8メッセージ本文のエンコーディング
messageIdStringf7622d51-e198-41de-a072-77c1ead7****一意のメッセージ ID
envelopeMapAMQP エンベロープメタデータ
deliveryTagInt98ブローカーによって割り当てられた配信タグ
exchangeString メッセージを送信する exchange の名前
redeliverBooleanfalseメッセージを再送信できるかどうかを指定します。有効な値:true または false
routingKeyStringhousekeepingメッセージをキューに配信するために使用されるルーティングキー

ステップ 3:関数コードの作成とテスト

エディターでコードを記述して、関数が受け取る event 配列を解析および処理します。コードをデプロイした後、以下の 2 つの方法のいずれかを使用してテストします。

  1. [コード] タブで、機能コードを記述し、[コードをデプロイ] をクリックします。 以下の Node.js の例では、raw イベントをログに記録し、結果を返します。

    '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');
    }
  2. 次のいずれかの方法で関数をテストします。

    • シミュレートされたイベント: [関数をテスト] をクリックして、ステップ 2 で設定したテストパラメーターで実行します。

    • 実際のメッセージ: ApsaraMQ for RabbitMQ コンソールにログオンし、キューを選択して [メッセージの送信] をクリックしてメッセージを公開します。トリガーが自動的に起動します。

      image

  3. 実行後は、[リアルタイムログ]で結果を確認してください。

    image

次のステップ

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

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