Azure Functions における RabbitMQ の出力バインドの概要
Note
RabbitMQ バインドは、Premium および Dedicated プランでのみ完全にサポートされています。 従量課金はサポートされていません。
RabbitMQ 出力バインドを使用して、RabbitMQ キューにメッセージを送信します。
セットアップと構成の詳細については、概要に関する記事を参照してください。
例
A C# 関数は、次の C# モードのいずれかを使用して作成できます。
- 分離されたワーカー モデル: ランタイムから分離されたワーカー プロセスで実行されるコンパイル済みの C# 関数。 分離ワーカー プロセスは、LTS および 非 LTS バージョンの .NET および .NET Framework で実行されている C# 関数をサポートするために必要です。
- インプロセス モデル: 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 関数は、@RabbitMQOutput
からの @RabbitMQOutput
注釈を使用して、RabbitMQ キュー出力バインディングの構成を記述します。 この関数は、5 分ごとに TimerTrigger によってトリガーされたときに RabbitMQ キューにメッセージを送信します。
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
次の例は、function.json ファイルの RabbitMQ 出力バインドと、そのバインドを使用する JavaScript 関数を示しています。 この関数は、HTTP トリガーからメッセージを読み取り、RabbitMQ キューに出力します。
function.json ファイルのバインディング データを次に示します。
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
JavaScript コードを次に示します。
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
次の例は、function.json ファイルの RabbitMQ 出力バインドと、そのバインドを使用する Python 関数を示しています。 この関数は、HTTP トリガーからメッセージを読み取り、RabbitMQ キューに出力します。
function.json ファイルのバインディング データを次に示します。
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
_init_.py の内容:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
属性
インプロセスと分離ワーカー プロセスの C# ライブラリはどちらも、 属性を使用して関数を定義します。 C# スクリプトでは、代わりに function.json 構成ファイルを使います。
この属性のコンストラクターは、次のパラメーターを受け取ります。
パラメーター | 説明 |
---|---|
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 クライアントの既定のポート設定を指します。 |
C# クラス ライブラリでは、RabbitMQTrigger 属性を使用します。
分離ワーカー プロセス ライブラリのメソッド シグネチャの RabbitMQTrigger
属性は次のとおりです。
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
注釈
RabbitMQOutput
注釈を使用すると、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 >" のような設定が必要になります。 |
port | 使用されているポートを取得または設定します。 既定値は 0 です。これは、5672 という RabbitMQ クライアントの既定のポート設定を指します。 |
詳細については、出力バインドの例を参照してください。
構成
次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。
function.json のプロパティ | 説明 |
---|---|
type | RabbitMQ に設定する必要があります。 |
direction | out に設定する必要があります。 |
name | 関数コード内のキューを表す変数の名前。 |
queueName | メッセージの送信先となるキューの名前。 |
hostName | キューのホスト名 (10.26.45.210 など)。 connectStringSetting を使う場合は無視されます。 |
userName | UserNameSetting のような、キューにアクセスするユーザー名を含むアプリ設定の名前 (UserNameSetting: "< UserNameFromSettings >" など)。 connectStringSetting を使う場合は無視されます。 |
password | UserNameSetting のような、キューにアクセスするパスワードを含むアプリ設定の名前 (UserNameSetting: "< UserNameFromSettings >" など)。 connectStringSetting を使う場合は無視されます。 |
connectionStringSetting | RabbitMQ メッセージ キュー接続文字列を含むアプリ設定の名前。 local.settings.json でアプリの設定を使わず、接続文字列を直接指定した場合、トリガーは機能しません。 たとえば、connectionStringSetting: "rabbitMQConnection" を設定した場合、local.settings.json と関数アプリの両方で、"rabbitMQConnection" : "< ActualConnectionstring >" のような設定が必要になります。 |
port | 使用されているポートを取得または設定します。 既定値は 0 です。これは、5672 という RabbitMQ クライアントの既定のポート設定を指します。 |
ローカルで開発する場合は、Values
コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。
完全な例については、セクションの例を参照してください。
使用方法
RabbitMQ トリガーによってサポートされるパラメーターの型は、Functions ランタイムのバージョン、拡張機能パッケージのバージョン、および使用される C# のモダリティによって異なります。
現在、RabbitMQ のバインドは、分離ワーカー プロセス内で実行する場合、文字列とシリアル化可能なオブジェクト型のみをサポートしています。
完全な例については、C# の例を参照してください。
出力バインドには、次のパラメーターの型を使用します。
byte[]
- 関数が終了したときにパラメーター値が null の場合、Functions はメッセージを作成しません。string
- 関数が終了したときにパラメーター値が null の場合、Functions はメッセージを作成しません。POJO
- パラメーター値が Java オブジェクトとして書式設定されていない場合は、エラーが発生します。
キュー メッセージは、context.bindings.<NAME>
を介して使用できます。この <NAME>
は function.json で定義されている名前と一致します。 ペイロードが JSON の場合、値はオブジェクトに逆シリアル化されます。
Python の例を参照してください。