Azure Functions에 대 한 Azure Queue storage 출력 바인딩Azure Queue storage output bindings for Azure Functions

Azure Functions는 출력 바인딩을 설정 하 여 새 Azure 큐 저장소 메시지를 만들 수 있습니다.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 DescriptionDescription
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"로 설정 하는 경우 함수 런타임은 "MyStorage" 라는 앱 설정을 찾습니다.For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "MyStorage." connection을 비워 두면 함수 런타임 기능은 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:

예외 및 반환 코드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.js예제에는이 바인딩에 대 한 버전 2.x + 설정만 포함 되어 있습니다.The example host.json file below contains only the version 2.x+ settings for this binding. 2.x 이상 버전의 전역 구성 설정에 대 한 자세한 내용은 Azure Functions에 대 한 참조host.js를 참조 하세요.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의 참조는 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 기본값Default DescriptionDescription
maxPollingIntervalmaxPollingInterval 00:00:0100:00:01 큐 폴링 사이의 최대 간격입니다.The maximum interval between queue polls. 최소는 00: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 함수 런타임이 동시에 검색하고 병렬로 처리하는 큐 메시지 수입니다.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. 따라서 함수당 처리되는 최대 동시 메시지 수는 batchSize + newBatchThreshold입니다.So the maximum number of concurrent messages being processed per function is batchSize plus newBatchThreshold. 이 제한은 큐 트리거 함수에 개별적으로 적용됩니다.This limit applies separately to each queue-triggered function.

하나의 큐에 수신된 메시지에 대해 병렬 실행을 방지하려면 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은 각 큐 트리거 함수의 인스턴스 하나를 실행할 수 있습니다.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