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

注意

RabbitMQ バインドは、Premium および Dedicated プランでのみ完全にサポートされています。 従量課金はサポートされていません。

RabbitMQ 出力バインドを使用して、RabbitMQ キューにメッセージを送信します。

セットアップと構成の詳細については、概要に関する記事を参照してください。

次の例は、メソッドの戻り値を出力として使用して 5 分ごとに TimerTrigger によってトリガーされたときに RabbitMQ メッセージを送信する C# 関数を示しています。

[FunctionName("RabbitMQOutput")]
[return: RabbitMQ(QueueName = "outputQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

次の例は、IAsyncCollector インターフェイスを使用してメッセージを送信する方法を示しています。

[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] string rabbitMQEvent,
[RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<string> outputEvents,
ILogger log)
{
     // send the message
    await outputEvents.AddAsync(JsonConvert.SerializeObject(rabbitMQEvent));
}

次の例は、メッセージを POCO として送信する方法を示しています。

namespace Company.Function
{
    public class TestClass
    {
        public string x { get; set; }
    }
    public static class RabbitMQOutput{
        [FunctionName("RabbitMQOutput")]
        public static async Task Run(
        [RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] TestClass rabbitMQEvent,
        [RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<TestClass> outputPocObj,
        ILogger log)
        {
            // send the message
            await outputPocObj.AddAsync(rabbitMQEvent);
        }
    }
}

属性と注釈

C# クラス ライブラリでは、RabbitMQAttribute を使用します。

メソッド シグネチャでの RabbitMQAttribute 属性を次に示します。

[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("SourceQueue", ConnectionStringSetting = "TriggerConnectionString")] string rabbitMQEvent,
[RabbitMQ("DestinationQueue", ConnectionStringSetting = "OutputConnectionString")]IAsyncCollector<string> outputEvents,
ILogger log)
{
    ...
}

完全な例については、C# のを参照してください。

構成

次の表は、function.json ファイルと RabbitMQ 属性で設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 属性のプロパティ 説明
type 該当なし "RabbitMQ" に設定する必要があります。
direction 該当なし "out" に設定する必要があります。
name 該当なし 関数コード内のキューを表す変数の名前。
queueName QueueName メッセージの送信先となるキューの名前。
hostName HostName (ConnectStringSetting を使用する場合は無視されます)
キューのホスト名 (例:10.26.45.210)
userName UserName (ConnectionStringSetting を使用する場合は無視されます)
キューにアクセスするためのユーザー名を含むアプリ設定の名前。 例: UserNameSetting: "< UserNameFromSettings >"
password パスワード (ConnectionStringSetting を使用する場合は無視されます)
キューにアクセスするためのパスワードを含むアプリ設定の名前。 例: UserNameSetting: "< UserNameFromSettings >"
connectionStringSetting ConnectionStringSetting RabbitMQ メッセージ キュー接続文字列を含むアプリ設定の名前。 接続文字列は、local.settings.json のアプリ設定ではなく、直接指定した場合、トリガーは機能しないことに注意してください。 (例:function.json の場合: connectionStringSetting: "rabbitMQConnection"
local.settings.json の場合: "rabbitMQConnection" : "< ActualConnectionstring >")
port [ポート] (ConnectionStringSetting を使用する場合は無視されます) 使用されるポートを取得または設定します。 既定値は 0 です。これは rabbitmq クライアントの既定のポート設定を指します (5672)。

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。

使用法

出力バインドには、次のパラメーターの型を使用します。

  • byte[] - 関数が終了したときにパラメーター値が null の場合、Functions はメッセージを作成しません。
  • string - 関数が終了したときにパラメーター値が null の場合、Functions はメッセージを作成しません。
  • POCO - パラメーター値が C# オブジェクトとして書式設定されていない場合は、エラーが発生します。 完全な例については、C# のを参照してください。

C# 関数を使用する場合:

  • 非同期関数には、out パラメーターの代わりに戻り値または IAsyncCollector が必要です。

次の手順