Azure Functions における Azure Queue storage の出力バインドAzure Queue storage output bindings for Azure Functions

Azure Functions は、出力バインドを設定することによって、新しい Azure Queue storage メッセージを作成できます。Azure Functions can create new Azure Queue storage messages by setting up an output binding.

セットアップと構成の詳細については、概要に関するページをご覧ください。For information on setup and configuration details, see the overview.

Example

次の例は、受け取った HTTP 要求ごとにキュー メッセージを作成する C# 関数を示しています。The following example shows a C# function that creates a queue message for each HTTP request received.

[StorageAccount("MyStorageConnectionAppSetting")]
public static class QueueFunctions
{
    [FunctionName("QueueOutput")]
    [return: Queue("myqueue-items")]
    public static string QueueOutput([HttpTrigger] dynamic input,  ILogger log)
    {
        log.LogInformation($"C# function processed: {input.Text}");
        return input.Text;
    }
}

属性と注釈Attributes and annotations

C# クラス ライブラリでは、QueueAttribute を使用します。In C# class libraries, use the QueueAttribute.

この属性は、out パラメーターまたは関数の戻り値に適用されます。The attribute applies to an out parameter or the return value of the function. 次の例のように、属性のコンストラクターはキューの名前を受け取ります。The attribute's constructor takes the name of the queue, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

次の例で示すように、Connection プロパティを設定して、使用するストレージ アカウントを指定できます。You can set the Connection property to specify the storage account to use, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items", Connection = "StorageConnectionAppSetting")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

完全な例については、「出力 - 例」を参照してください。For a complete example, see Output example.

StorageAccount 属性を使用して、クラス、メソッド、またはパラメーターのレベルでストレージ アカウントを指定できます。You can use the StorageAccount attribute to specify the storage account at class, method, or parameter level. 詳細については、「トリガー - 属性」をご覧ください。For more information, see Trigger - attributes.

構成Configuration

次の表は、function.json ファイルと Queue 属性で設定したバインド構成のプロパティを説明しています。The following table explains the binding configuration properties that you set in the function.json file and the Queue attribute.

function.json のプロパティfunction.json property 属性のプロパティAttribute property 説明Description
typetype 該当なしn/a queue に設定する必要があります。Must be set to queue. このプロパティは、Azure Portal でトリガーを作成するときに自動で設定されます。This property is set automatically when you create the trigger in the Azure portal.
directiondirection 該当なしn/a out に設定する必要があります。Must be set to out. このプロパティは、Azure Portal でトリガーを作成するときに自動で設定されます。This property is set automatically when you create the trigger in the Azure portal.
namename 該当なしn/a 関数コード内のキューを表す変数の名前。The name of the variable that represents the queue in function code. $return に設定して、関数の戻り値を参照します。Set to $return to reference the function return value.
queueNamequeueName QueueNameQueueName キューの名前。The name of the queue.
connectionconnection 接続Connection このバインドに使用するストレージ接続文字列を含むアプリ設定の名前です。The name of an app setting that contains the Storage connection string to use for this binding. アプリ設定の名前が "AzureWebJobs" で始まる場合は、ここで名前の残りの部分のみを指定できます。If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name here. たとえば、connection を "MyStorage" に設定した場合、Functions ランタイムは "MyStorage" という名前のアプリ設定を探します。For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "MyStorage." connection を空のままにした場合、Functions ランタイムは、アプリ設定内の AzureWebJobsStorage という名前の既定のストレージ接続文字列を使用します。If you leave connection empty, the Functions runtime uses the default Storage connection string in the app setting that is named AzureWebJobsStorage.

ローカルで開発している場合、アプリ設定は local.settings.json ファイルに保存されます。When you're developing locally, app settings go into the local.settings.json file.

使用法Usage

out T paramName などのメソッドのパラメーターを使用して、単一のキュー メッセージを書き込みます。Write a single queue message by using a method parameter such as out T paramName. out パラメーターではなくメソッドの戻り値の型を使用することができます。T は次に示すいずれかの型の場合があります。You can use the method return type instead of an out parameter, and T can be any of the following types:

CloudQueueMessage にバインドしようとしてエラー メッセージが表示された場合は、適切な Storage SDK バージョンへの参照があることをご確認ください。If you try to bind to CloudQueueMessage and get an error message, make sure that you have a reference to the correct Storage SDK version.

C# と C# スクリプトで複数のキュー メッセージを書き込むには、次のいずれかの型を使用します。In C# and C# script, write multiple queue messages by using one of the following types:

  • ICollector<T> または IAsyncCollector<T>ICollector<T> or IAsyncCollector<T>
  • CloudQueueCloudQueue

例外とリターン コードExceptions and return codes

バインドBinding リファレンスReference
キューQueue キュー エラー コードQueue Error Codes
BLOB、テーブル、キューBlob, Table, Queue ストレージ エラー コードStorage Error Codes
BLOB、テーブル、キューBlob, Table, Queue トラブルシューティングTroubleshooting

host.json 設定host.json settings

このセクションでは、バージョン 2.x 以降でこのバインドに使用可能なグローバル構成設定について説明します。This section describes the global configuration settings available for this binding in versions 2.x and higher. 次の host.json ファイルの例には、このバインドのバージョン 2.x 以降の設定のみが含まれています。The example host.json file below contains only the version 2.x+ settings for this binding. バージョン 2.x 以降でのグローバル構成設定の詳細については、「Azure Functions の host.json のリファレンス」を参照してください。For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

注意

Functions 1.x の host.json のリファレンスについては、「host.json reference for Azure Functions 1.x (Azure Functions 1.x の host.json のリファレンス)」を参照してください。For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8
        }
    }
}
プロパティProperty DefaultDefault 説明Description
maxPollingIntervalmaxPollingInterval 00:00:0100:00:01 キューのポーリングの最大間隔。The maximum interval between queue polls. 最小は 00:00:00.100 (100 ミリ秒) であり、最大 00:01:00 (1 分) まで増分されます。Minimum is 00:00:00.100 (100 ms) and increments up to 00:01:00 (1 min). データ型は 1.x ではミリ秒であり、2.x 以降では TimeSpan です。In 1.x the data type is milliseconds, and in 2.x and higher it is a TimeSpan.
visibilityTimeoutvisibilityTimeout 00:00:0000:00:00 メッセージの処理が失敗したときの再試行間隔。The time interval between retries when processing of a message fails.
batchSizebatchSize 1616 Functions ランタイムが同時に取得して並列で処理するキュー メッセージの数。The number of queue messages that the Functions runtime retrieves simultaneously and processes in parallel. 処理中のメッセージの数が newBatchThreshold まで減少すると、ランタイムは は別のバッチを取得し、そのメッセージの処理を開始します。When the number being processed gets down to the newBatchThreshold, the runtime gets another batch and starts processing those messages. そのため、1 つの関数につき同時に処理されるメッセージの最大数は、batchSizenewBatchThreshold を加えた値です。So the maximum number of concurrent messages being processed per function is batchSize plus newBatchThreshold. この制限は、キューによってトリガーされる各関数に個別に適用されます。This limit applies separately to each queue-triggered function.

1 つのキューで受信した複数のメッセージの並列実行を回避したい場合は、batchSize を 1 に設定します。If you want to avoid parallel execution for messages received on one queue, you can set batchSize to 1. ただし、この設定では、関数アプリが単一の仮想マシン (VM) で実行されている限り、コンカレンシーは実現しません。However, this setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM). この関数アプリを複数の VM にスケール アウトすると、各 VM では、キューによってトリガーされる関数ごとに 1 つのインスタンスを実行できます。If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.

最大の batchSize は 32 です。The maximum batchSize is 32.
maxDequeueCountmaxDequeueCount 55 有害キューに移動する前に、メッセージの処理を試行する回数。The number of times to try processing a message before moving it to the poison queue.
newBatchThresholdnewBatchThreshold batchSize/2batchSize/2 同時に処理されているメッセージの数がこの数まで減少すると、ランタイムは別のバッチを取得します。Whenever the number of messages being processed concurrently gets down to this number, the runtime retrieves another batch.

次のステップNext steps