次の方法で共有


Azure Functions における RabbitMQ バインドの概要

Azure Functions はトリガーとバインドを使用して RabbitMQ と統合されます。

RabbitMQ バインドは、 Elastic Premium および Dedicated (App Service)) プランでのみ完全にサポートされます。 Flex Consumption および Consumption プランはまだサポートされていません。

RabbitMQ バインドは、Azure Functions v1.x ランタイムではサポートされていません。

Azure Functions の RabbitMQ 拡張機能を使用すると、Functions で RabbitMQ API を使用してメッセージを送受信できます。

アクション タイプ
RabbitMQ メッセージがキューから届いたら、関数を実行する トリガー
RabbitMQ メッセージを送信する 出力バインド

前提条件

RabbitMQ 拡張機能を使用する前に、RabbitMQ エンドポイントを設定する必要があります。 RabbitMQ の詳細については、作業の開始に関するページを参照してください。

拡張機能のインストール

インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。

関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。

この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。

バンドルのインストール

アプリでこのバインド拡張機能を使用できるようにするには、プロジェクトのルートにある host.json ファイルに次の extensionBundle 参照が含まれていることを確認します。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

この例では、version[4.0.0, 5.0.0)値は、少なくとも4.0.05.0.0未満のバンドル バージョン (4.x のすべての潜在的なバージョンを含む) を使用するように Functions ホストに指示します。 この表記は、v4.x 拡張機能バンドルの利用可能な最新のマイナー バージョンでアプリを効果的に維持します。

可能であれば、最新の拡張機能バンドルメジャー バージョンを使用し、ランタイムが最新のマイナー バージョンを自動的に維持できるようにする必要があります。 最新のバンドルの内容は、 拡張機能バンドルのリリース ページで確認できます。 詳細については、 Azure Functions 拡張機能バンドルに関するページを参照してください。

host.json 設定

このセクションでは、バージョン 2.x 以降でこのバインドに使用できる構成設定について説明します。 host.json ファイルの設定は、関数アプリ インスタンス内のすべての関数に適用されます。 関数アプリの構成設定の詳細については、 Azure Functions のhost.json リファレンスを参照してください。

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "%<MyConnectionAppSetting>%",
            "port": 10
        }
    }
}
プロパティ 既定値 Description
prefetchCount 30 メッセージ受信者が同時に要求でき、キャッシュされるメッセージの数を取得または設定します。
queueName 該当なし メッセージを受信するキューの名前。
connectionString 該当なし RabbitMQ メッセージ キューの接続文字列を含むアプリ設定。
port 0 (connectionString を使用している場合は無視されます)使用するポートを取得または設定します。 既定値は 0 で、rabbitmq クライアントの既定のポート設定である 5672 を指します。