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

Function Compute:RabbitMQ トリガー

最終更新日:Sep 10, 2026

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

仕組み

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

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

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

制限事項

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

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

前提条件

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

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

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

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

  3. トリガーのパラメーターを設定します。設定パネルは次の図のようになります。

    image

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

呼び出し方法

FC がメッセージ到着時に関数を呼び出す方法を選択します:

方法 最大ペイロード 動作 使用シナリオ
[同期呼び出し] 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-hangzhou",
    "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-hangzhou",
    "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 フィールドのパラメーター

パラメーター タイプ 例 説明
body Map ユーザー定義のコンテンツを含むメッセージ本文
Hello String RabbitMQ メッセージ本文内のユーザーデータ
props Map メッセージ属性
contentEncoding String utf-8 メッセージ本文のエンコーディング
messageId String f7622d51-e198-41de-a072-77c1ead7**** 一意のメッセージ ID
envelope Map AMQP エンベロープメタデータ
deliveryTag Int 98 ブローカーによって割り当てられた配信タグ
exchange String メッセージを送信するエクスチェンジの名前
redeliver Boolean false メッセージが以前に配信されたことがあるかどうかを示します。有効な値:true または false
routingKey String housekeeping メッセージをキューに配信するために使用されるルーティングキー

ステップ 3:関数コードの記述とテスト

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

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

    'use strict';
    /*
    initializer 機能を有効にするには、
    以下のように initializer 関数を実装してください:
    exports.initializer = (context, callback) => {
      console.log('初期化中');
      callback(null, '');
    };
    */
    exports.handler = (event, context, callback) => {
      console.log("event: %s", event);
      // イベントパラメーターをパースしてイベントを処理します。
      callback(null, 'return result');
    }
  2. 次のいずれかの方法で関数をテストします:

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

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

      image

  3. 実行後、[リアルタイムログ] で結果を確認します。

    image

次のステップ

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

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