Azure Functions의 Azure Service Bus 바인딩

Azure Functions는 트리거 및 바인딩을 통해 Azure Service Bus와 통합됩니다. Service Bus와 통합하면 큐 또는 토픽 메시지에 응답하고 이를 전송하는 함수를 작성할 수 있습니다.

작업 유형
Service Bus 큐 또는 토픽 메시지가 만들어지면 함수를 실행합니다. 트리거
Azure Service Bus 메시지 전송 출력 바인딩

Functions 앱 추가

Functions 2.x 이상

트리거 및 바인딩을 사용하려면 적절한 패키지를 참조해야 합니다. NuGet 패키지는 .NET 클래스 라이브러리에 사용되는 반면, 확장 번들은 다른 모든 애플리케이션 형식에 사용됩니다.

언어 추가 방법... 설명
C# NuGet 패키지, 버전 4.x 설치
C# Script, Java, JavaScript, Python, PowerShell 확장 번들 등록 Azure Tools 확장은 Visual Studio Code와 함께 사용하는 것이 좋습니다.
C# 스크립트(Azure Portal에서 온라인으로만) 바인딩 추가 함수 앱을 다시 게시하지 않고 기존 바인딩 확장을 업데이트하려면 확장 업데이트를 참조하세요.

Service Bus 확장 5.x 이상

이제 Service Bus 바인딩 확장의 새 버전을 사용할 수 있습니다. 비밀 대신 id를 사용 하 여 연결하는 기능이 도입 되었습니다. 관리 id를 사용 하 여 함수 앱을 구성 하는 방법에 대 한 자습서는 id 기반 연결을 사용 하 여 함수 앱 만들기 자습서를 참조 하세요. .NET 응용 프로그램의 경우에는 새 확장 버전 에서도 바인딩할 수 있는 형식을 변경 하 여 Microsoft.ServiceBus.Messaging Microsoft.Azure.ServiceBus ServiceBus의 새 형식으로 형식을 바꿉니다.

이 확장 버전은 NuGet 패키지, 버전 5.x를 설치 하 여 사용할 수 있으며, 파일에 다음을 추가 하 여 확장 번들 v3에서 추가할 수 있습니다 host.json .

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

자세히 알아보려면 확장 업데이트를 참조 하세요.

Functions 1.x

Functions 1.x 앱은 Microsoft.Azure.WebJobs NuGet 패키지 버전 2.x에 대한 참조를 자동으로 포함합니다.

host.json 설정

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

참고

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

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "prefetchCount": 100,
            "messageHandlerOptions": {
                "autoComplete": true,
                "maxConcurrentCalls": 32,
                "maxAutoRenewDuration": "00:05:00"
            },
            "sessionHandlerOptions": {
                "autoComplete": false,
                "messageWaitTimeout": "00:00:30",
                "maxAutoRenewDuration": "00:55:00",
                "maxConcurrentSessions": 16
            },
            "batchOptions": {
                "maxMessageCount": 1000,
                "operationTimeout": "00:01:00",
                "autoComplete": true
            }
        }
    }
}

isSessionsEnabledtrue로 설정한 경우 sessionHandlerOptions가 적용됩니다. isSessionsEnabledfalse로 설정한 경우 messageHandlerOptions가 적용됩니다.

속성 기본값 Description
prefetchCount 0 메시지 수신자가 동시에 요청할 수 있는 메시지 수를 가져오거나 설정합니다.
messageHandlerOptions.maxAutoRenewDuration 00:05:00 메시지 잠금이 자동으로 갱신되는 최대 기간입니다.
messageHandlerOptions.autoComplete true 트리거가 처리 후 자동으로 complete를 호출해야 하는지, 아니면 함수 코드가 수동으로 complete를 호출하는지 여부입니다.

false로 설정하는 것은 C#에서만 지원됩니다.

true로 설정한 경우 함수 실행이 성공적으로 완료되면 트리거가 자동으로 메시지를 완료하고 그렇지 않으면 메시지가 중단됩니다.

false로 설정한 경우 MessageReceiver 메서드를 호출하여 메시지를 완료, 중단 또는 배달 못하도록 합니다. 예외가 발생하고 MessageReceiver 메서드가 호출되지 않으면 잠금이 유지됩니다. 잠금이 만료되면 DeliveryCount가 증가하여 메시지가 다시 큐에 추가되고 잠금이 자동으로 갱신됩니다.

C#이 아닌 함수에서 함수의 예외로 인해 백그라운드에서 런타임 호출 abandonAsync가 발생합니다. 예외가 발생하지 않으면 completeAsync가 백그라운드에서 호출됩니다.
messageHandlerOptions.maxConcurrentCalls 16 메시지 펌프가 크기 조정된 인스턴스별로 시작해야 하는 콜백에 대한 최대 동시 호출 수입니다. 기본적으로 함수 런타임은 여러 개의 메시지를 동시에 처리합니다.
sessionHandlerOptions.maxConcurrentSessions 2000 크기 조정된 인스턴스당 동시에 처리할 수 있는 최대 세션 수입니다.
batchOptions.maxMessageCount 1000 트리거될 때 함수로 전송되는 최대 메시지 수입니다.
batchOptions.operationTimeout 00:01:00 hh:mm:ss로 표현된 시간 범위 값입니다.
batchOptions.autoComplete true messageHandlerOptions.autoComplete에 대한 위의 설명을 참조하세요.

버전 5.x 이상에 대한 추가 설정

아래 host.json 파일의 예에는 Service Bus 확장 버전 5.0.0 이상에 대한 설정만 포함되어 있습니다.

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "clientRetryOptions":{
                "mode": "exponential",
                "tryTimeout": "00:01:00",
                "delay": "00:00:00.80",
                "maxDelay": "00:01:00",
                "maxRetries": 3
            },
            "prefetchCount": 0,
            "autoCompleteMessages": true,
            "maxAutoLockRenewalDuration": "00:05:00",
            "maxConcurrentCalls": 16,
            "maxConcurrentSessions": 8,
            "maxMessages": 1000,
            "sessionIdleTimeout": "00:01:00",
            "enableCrossEntityTransactions": false
        }
    }
}

Service Bus 확장 버전 5.x 이상을 사용하는 경우 ServiceBusOptions의 2.x 설정 외에 다음 글로벌 구성 설정이 지원됩니다.

속성 기본값 Description
prefetchCount 0 메시지 수신자가 동시에 요청할 수 있는 메시지 수를 가져오거나 설정합니다.
autoCompleteMessages true 함수를 성공적으로 실행한 후 메시지를 자동으로 완료할지 여부를 결정하며 autoComplete 구성 설정 대신 사용해야 합니다.
maxAutoLockRenewalDuration 00:05:00 maxAutoRenewDuration 대신 사용해야 합니다.
maxConcurrentCalls 16 메시지 펌프가 크기 조정된 인스턴스별로 시작해야 하는 콜백에 대한 최대 동시 호출 수입니다. 기본적으로 함수 런타임은 여러 개의 메시지를 동시에 처리합니다.
maxConcurrentSessions 8 크기 조정된 인스턴스당 동시에 처리할 수 있는 최대 세션 수입니다.
maxMessages 1000 각 함수 호출에 전달될 최대 메시지 수입니다. 메시지 일괄 처리를 수신하는 함수에만 적용됩니다.
sessionIdleTimeout 해당 없음 현재 활성 세션에 대한 메시지가 수신될 때까지 대기하는 최대 시간입니다. 이 시간이 경과되면 프로세서에서 세션을 닫고 다른 세션을 처리하려고 합니다.
enableCrossEntityTransactions false Service Bus 네임 스페이스의 여러 엔터티에 걸쳐 있는 트랜잭션을 사용할지 여부입니다.

다시 시도 설정

버전 5.x 이상의 Service Bus 확장을 사용할 때 위의 구성 특성 외에도 ServiceBusOptions 내에서 RetryOptions를 구성할 수도 있습니다. 이러한 설정은 실패한 작업을 다시 시도해야 하는지 여부를 결정하고, 그럴 경우 다시 시도 간의 대기 시간을 결정합니다. 이 옵션은 또한 Service Bus 서비스와의 메시지 수신 및 기타 상호 작용에 허용되는 시간을 제어합니다.

속성 기본값 설명
mode 지수 다시 시도 지연을 계산하는 데 사용하는 방법입니다. 기본 지수 모드는 다시 시도하기 전에 대기하는 기간을 증가시키는 백오프 전략에 따라 지연 시간으로 다시 시도합니다. Fixed 모드는 각 지연 시간이 일관된 고정 간격으로 다시 시도합니다.
tryTimeout 00:01:00 시도당 작업을 대기하는 최대 기간입니다.
delay 00:00:00.80 다시 시도 사이에 적용할 지연 또는 백오프 요소입니다.
maxDelay 00:01:00 다시 시도 사이에 허용되는 최대 지연
maxRetries 3 연결된 작업이 실패한 것으로 간주하기 전 최대 다시 시도 횟수입니다.

다음 단계