Azure Functions의 Azure Queue 스토리지 트리거 및 바인딩 개요

Azure Functions는 새 Azure Queue 스토리지 메시지가 만들어질 때 실행될 수 있고 함수 내에서 큐 메시지를 작성할 수 있습니다.

작업 Type
큐 스토리지 데이터 변경 시 함수 실행 트리거
큐 스토리지 메시지 쓰기 출력 바인딩

확장 설치

설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.

Functions는 Functions 호스트와 동일한 프로세스에서 실행됩니다. 자세한 내용은 Azure Functions를 사용하여 C# 클래스 라이브러리 함수 개발을 참조하세요.

확장 기능의 기능은 확장 버전에 따라 다릅니다.

이 버전에는 비밀 대신 ID를 사용하여 연결하는 기능이 도입되었습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.

이 버전을 사용하면 Azure.Storage.Queues의 형식에 바인딩할 수 있습니다.

이 확장은 Microsoft.Azure.WebJobs.Extensions.Storage.Queues NuGet 패키지, 버전 5.x를 설치하여 사용할 수 있습니다.

.NET CLI 사용:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Queues --version 5.0.0

참고

Blob Storage, Queue Storage 및 Table Storage는 이제 별도의 확장을 사용하고 개별적으로 참조됩니다. 예를 들어 .NET in-process 앱의 세 가지 서비스 모두에 대해 트리거와 바인딩을 사용하려면 프로젝트에 다음 패키지를 추가해야 합니다.

이전에는 확장이 Microsoft.Azure.WebJobs.Extensions.Storage, 버전 4.x로 함께 제공되었습니다. 이 동일한 패키지에는 Blob 및 큐에 대해서만 분할 패키지를 참조하는 5.x 버전도 있습니다. 따라서 이전 버전에서 패키지 참조를 업그레이드할 때 새로운 Microsoft.Azure.WebJobs.Extensions.Tables NuGet 패키지를 추가로 참조해야 할 수 있습니다. 또한 이러한 새로운 분할 패키지를 참조할 때 결합된 스토리지 패키지의 이전 버전을 참조하고 있지 않은지 확인합니다. 이렇게 하면 동일한 바인딩의 두 정의에서 충돌이 발생하기 때문입니다.

번들 설치

Blob Storage 바인딩은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 바인딩 버전을 변경하거나 번들이 아직 설치되지 않은 경우 이 번들을 수정해야 할 수 있습니다. 자세한 내용은 확장 번들을 참조하세요.

이 버전에는 비밀 대신 ID를 사용하여 연결하는 기능이 도입되었습니다. 관리 ID로 함수 앱을 구성하는 방법에 대한 자습서는 ID 기반 연결로 함수 앱 만들기 자습서를 참조하세요.

host.json 파일에서 다음 코드를 추가하거나 교체하여 미리 보기 확장 번들 v3에서 이 버전의 확장을 추가할 수 있습니다.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

자세한 내용은 확장 업데이트를 참조하세요.

참고

확장 번들의 버전 3.x에는 현재 Table Storage 바인딩이 포함되어 있지 않습니다. 앱에 Table Storage가 필요한 경우 지금은 2.x 버전을 계속 사용해야 합니다.

host.json 설정

이 섹션에서는 버전 2.x 이상에서 이 바인딩에 사용할 수 있는 구성 설정에 대해 설명합니다. host.json 파일의 설정은 함수 앱 인스턴스의 모든 함수에 적용됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x+ 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions용 host.json 참조를 참조하세요.

참고

Functions 1.x에서 host.json의 참조는 Azure Functions 1.x에 대한 host.json 참조를 참조하세요.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
속성 기본값 Description
maxPollingInterval 00:01:00 큐 폴링 사이의 최대 간격입니다. 최소 간격은 00:00:00.100(100밀리초)입니다. 간격이 maxPollingInterval까지 점진적으로 증가합니다. 기본값 maxPollingInterval은 00:01:00(1분)입니다. maxPollingInterval은(는) 00:00:00.100(100밀리초)보다 작지 않아야 합니다. Functions 2.x 이상에서 데이터 형식은 TimeSpan입니다. Functions 1.x에서는 밀리초 단위입니다.
visibilityTimeout 00:00:00 메시지 처리가 실패하는 경우 재시도 사이의 간격입니다.
batchSize 16 함수 런타임이 동시에 검색하고 병렬로 처리하는 큐 메시지 수입니다. 처리되는 개수가 newBatchThreshold로 감소하면 런타임은 다른 일괄 처리를 가져와 해당 메시지의 처리를 시작합니다. 따라서 함수당 처리되는 최대 동시 메시지 수는 batchSize + newBatchThreshold입니다. 이 제한은 큐 트리거 함수에 개별적으로 적용됩니다.

하나의 큐에 수신된 메시지에 대해 병렬 실행을 방지하려면 batchSize을 1로 설정합니다. 그러나 이 설정은 함수 앱이 단일 VM(가상 머신)에서 실행되는 동안에만 동시성을 제거합니다. 함수 앱이 여러 VM에 확장되면 각 VM은 각 큐 트리거 함수의 인스턴스 하나를 실행할 수 있습니다.

최대 batchSize은 32입니다.
maxDequeueCount 5 포이즌 큐로 이동하기 전에 메시지 처리를 시도할 횟수입니다.
newBatchThreshold N*batchSize/2 동시에 처리되는 메시지의 수가 이 숫자로 내려갈 때마다 런타임은 다른 일괄 처리를 검색합니다.

N은 App Service 또는 프리미엄 플랜에서 실행할 때 사용 가능한 vCPU 수를 나타냅니다. 사용 계획에 대한 값은 1입니다.
messageEncoding base64 이 설정은 확장 버전 5.0.0 이상에서만 사용할 수 있습니다. 메시지의 인코딩 형식을 나타냅니다. 유효한 값은 base64none입니다.

다음 단계