RabbitMQ キューからのメッセージに応答するには、RabbitMQ トリガーを使用します。
注
RabbitMQ バインドは、 Elastic Premium および Dedicated (App Service)) プランでのみ完全にサポートされます。 Flex Consumption および Consumption プランはまだサポートされていません。
RabbitMQ バインドは、Azure Functions v1.x ランタイムではサポートされていません。
セットアップと構成の詳細については、概要に関するページをご覧ください。
例
C# 関数は、次のいずれかの C# モードを使用して作成できます。
- 分離されたワーカー モデル: ランタイムから分離されたワーカー プロセスで実行されるコンパイル済みの C# 関数。 .NET および .NET Framework の長期サポート (LTS) および LTS 以外のバージョンで実行されている C# 関数をサポートするには、分離ワーカー プロセスが必要です。
- インプロセス モデル: Azure Functions ランタイムと同じプロセスで実行されるコンパイル済み C# 関数。
- C# スクリプト: Azure portal で C# 関数を作成するときに主に使用されます。
重要
インプロセス モデルのサポートは 2026 年 11 月 10 日に終了します。 完全なサポートのために、分離ワーカー モデルにアプリを移行することを強くお勧めします。
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
var logger = context.GetLogger(nameof(RabbitMQFunction));
logger.LogInformation(item);
var message = $"Output message created at {DateTime.Now}";
return message;
}
次の Java 関数は、@RabbitMQTrigger
からの @RabbitMQTrigger
注釈を使用して、RabbitMQ キュー トリガーの構成を記述します。 この関数は、キューにあるメッセージを取得し、ログに追加します。
@FunctionName("RabbitMQTriggerExample")
public void run(
@RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
final ExecutionContext context)
{
context.getLogger().info("Java HTTP trigger processed a request." + input);
}
次の例は、function.json ファイルの RabbitMQ トリガー バインドと、そのバインドが使用される JavaScript スクリプト関数を示しています。 この関数は、RabbitMQ メッセージを読み取り、ログに記録します。
function.json ファイルのバインディング データを次に示します。
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
JavaScript スクリプト コードを次に示します。
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
次の例では、トリガーを使用して RabbitMQ キュー メッセージを読み取る方法を示します。
RabbitMQ のバインドは function.json で定義され、そこで type は RabbitMQTrigger
に設定されます。
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
import logging
import azure.functions as func
def main(myQueueItem) -> None:
logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)
属性
インプロセスと分離ワーカー プロセスの C# ライブラリはどちらも、 属性を使用して関数を定義します。 C# スクリプトでは、代わりに function.json 構成ファイルを使います。
この属性のコンストラクターは、次のパラメーターを受け取ります。
パラメーター | 説明 |
---|---|
キュー名 | メッセージを受け取るキューの名前。 |
HostName | キューのホスト名 (10.26.45.210 など)。
ConnectStringSetting を使う場合は無視されます。 |
UserNameSetting | キューにアクセスするためのユーザー名を含むアプリ設定の名前 (UserNameSetting: "%< UserNameFromSettings >%" など)。
ConnectStringSetting を使う場合は無視されます。 |
PasswordSetting | キューにアクセスするためのパスワードを含むアプリ設定の名前 (PasswordSetting: "%< PasswordFromSettings >%" など)。
ConnectStringSetting を使う場合は無視されます。 |
ConnectionStringSetting | RabbitMQ メッセージ キュー接続文字列を含むアプリ設定の名前。 アプリの設定を使わず、接続文字列を直接指定した場合、トリガーは機能しません。 たとえば、ConnectionStringSetting: "rabbitMQConnection" を設定した場合、local.settings.json と関数アプリの両方で、"RabbitMQConnection" : "< ActualConnectionstring >" のような設定が必要になります。 |
ポート | 使用されているポートを取得または設定します。 既定値は 0 です。これは、5672 という RabbitMQ クライアントの既定のポート設定を指します。 |
C# クラス ライブラリでは、RabbitMQTrigger 属性を使用します。
分離ワーカー プロセス ライブラリのメソッド シグネチャの RabbitMQTrigger
属性は次のとおりです。
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
注釈
RabbitMQTrigger
注釈を使用すると、RabbitMQ メッセージの作成時に実行される関数を作成できます。
注釈は、次の構成オプションをサポートしています。
パラメーター | 説明 |
---|---|
queueName | メッセージを受け取るキューの名前。 |
hostName | キューのホスト名 (10.26.45.210 など)。
ConnectStringSetting を使う場合は無視されます。 |
userNameSetting | キューにアクセスするためのユーザー名を含むアプリ設定の名前 (UserNameSetting: "%< UserNameFromSettings >%" など)。
ConnectStringSetting を使う場合は無視されます。 |
passwordSetting | キューにアクセスするためのパスワードを含むアプリ設定の名前 (PasswordSetting: "%< PasswordFromSettings >%" など)。
ConnectStringSetting を使う場合は無視されます。 |
connectionStringSetting | RabbitMQ メッセージ キュー接続文字列を含むアプリ設定の名前。 アプリの設定を使わず、接続文字列を直接指定した場合、トリガーは機能しません。 たとえば、ConnectionStringSetting: "rabbitMQConnection" を設定した場合、local.settings.json と関数アプリの両方で、"RabbitMQConnection" : "< ActualConnectionstring >" のような設定が必要になります。 |
ポート | 使用されているポートを取得または設定します。 既定値は 0 です。これは、5672 という RabbitMQ クライアントの既定のポート設定を指します。 |
構成
次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。
function.json のプロパティ | 説明 |
---|---|
タイプ |
RabbitMQTrigger に設定する必要があります。 |
方向 |
in に設定する必要があります。 |
名前 | 関数コード内のキューを表す変数の名前。 |
queueName | メッセージを受け取るキューの名前。 |
hostName | キューのホスト名 (10.26.45.210 など)。
connectStringSetting を使う場合は無視されます。 |
userNameSetting | キューにアクセスするためのユーザー名を含むアプリ設定の名前 (UserNameSetting: "%< UserNameFromSettings >%" など)。
connectStringSetting を使う場合は無視されます。 |
passwordSetting | キューにアクセスするためのパスワードを含むアプリ設定の名前 (PasswordSetting: "%< PasswordFromSettings >%" など)。
connectStringSetting を使う場合は無視されます。 |
connectionStringSetting | RabbitMQ メッセージ キュー接続文字列を含むアプリ設定の名前。 アプリの設定を使わず、接続文字列を直接指定した場合、トリガーは機能しません。 たとえば、connectionStringSetting: "rabbitMQConnection" を設定した場合、local.settings.json と関数アプリの両方で、"rabbitMQConnection" : "< ActualConnectionstring >" のような設定が必要になります。 |
ポート | 使用されているポートを取得または設定します。 既定値は 0 です。これは、5672 という RabbitMQ クライアントの既定のポート設定を指します。 |
完全な例については、セクションの例を参照してください。
使用方法
重要
RabbitMQ バインドでは、Microsoft Entra 認証とマネージド ID はサポートされていません。 Azure Key Vault を使用して RabbitMQ 接続文字列を一元管理できます。 詳細については、「 Manage Connections」を参照してください。
RabbitMQ トリガーでサポートされるパラメーターの型は、使う C# のモダリティによって異なります。
現在、RabbitMQ のバインドは、分離プロセス内で実行する場合、文字列とシリアル化可能なオブジェクト型のみをサポートしています。
完全な例については、C# の例を参照してください。
Java の注釈を参照してください。
キュー メッセージは、context.bindings.<NAME>
を介して使用できます。この <NAME>
は function.json で定義されている名前と一致します。 ペイロードが JSON の場合、値はオブジェクトに逆シリアル化されます。
Python の例を参照してください。
配信不能キュー
配信不能キューと交換は、RabbitMQ トリガーから制御または構成することはできません。 配信不能キューを使用するには、RabbitMQ のトリガーによって使用されるキューを事前に構成します。 RabbitMQ のドキュメントを参照してください。
host.json 設定
このセクションでは、バージョン 2.x 以降でこのバインドに使用できる構成設定について説明します。 host.json ファイルの設定は、関数アプリ インスタンスのすべての関数に適用されます。 関数アプリの構成設定の詳細については、 Azure Functions のhost.json リファレンスを参照してください。
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
プロパティ | 既定値 | 説明 |
---|---|---|
prefetchCount | 30 | メッセージの受信者が同時に要求およびキャッシュできるメッセージ数を取得または設定します。 |
キュー名 | 該当なし | メッセージを受信するキューの名前です。 |
コネクションストリング | 該当なし | RabbitMQ メッセージ キューの接続文字列。 接続文字列は、アプリ設定ではなく、ここで直接指定します。 |
港 | 0 | (connectionString を使用する場合は無視されます) 使用されるポートを取得または設定します。 既定値は 0 です。これは rabbitmq クライアントの既定のポート設定 5672 を指します。 |
ローカル テスト
注
connectionString は、"hostName"、"userName"、および "password" よりも優先されます。 これらがすべて設定されている場合、connectionString によって他の 2 つがオーバーライドされます。
接続文字列を使用せずにローカルでテストする場合は、該当する場合、host.json の "rabbitMQ" セクションで、"hostName" 設定と "userName" および "password" を設定する必要があります。
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
プロパティ | 既定値 | 説明 |
---|---|---|
ホスト名 | 該当なし | (connectionString を使用している場合は無視されます) キューのホスト名 (例:10.26.45.210) |
ユーザー名 | 該当なし | (connectionString を使用している場合は無視されます) キューにアクセスするための名前 |
パスワード | 該当なし | (connectionString を使用している場合は無視されます) キューにアクセスするためのパスワード |
ランタイム スケールを有効にする
RabbitMQ トリガーを複数のインスタンスにスケールアウトするには、ランタイム スケールの監視設定を有効にする必要があります。
ポータルでは、この設定はご利用の関数アプリの [構成]>[関数のランタイム設定] の下で見つけることができます。
CLI では、次のコマンドを使用して、ランタイム スケールの監視を有効にすることができます。
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
RabbitMQ エンドポイントの監視
特定の RabbitMQ エンドポイントのキューと交換を監視するには、次のようにします。
- RabbitMQ 管理プラグインを有効にする
- http://{node-hostname}:15672 にアクセスし、ユーザー名とパスワードを使用してログインします。