Azure Functions의 Azure Event Hubs 트리거 및 바인딩

이 문서에서는 Azure Functions에 Azure Event Hubs 바인딩을 사용하는 방법에 대해 설명합니다. Azure Functions는 Event Hubs에 대한 트리거 및 출력 바인딩을 지원합니다.

작업 유형
이벤트 허브 이벤트 스트림으로 전송된 이벤트에 응답합니다. 트리거
이벤트 스트림에 이벤트 쓰기 출력 바인딩

확장 설치

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

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

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

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

이 버전은 최신 Event Hubs 바인딩 형식 Azure.Messaging.EventHubs.EventData를 사용합니다.

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

번들 설치

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

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

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

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

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

host.json 설정

host.json 파일에는 Event Hubs 트리거의 동작을 제어하는 설정이 포함되어 있습니다. 확장 버전에 따라 구성이 다릅니다.

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "maxEventBatchSize" : 10,
            "batchCheckpointFrequency" : 5,
            "prefetchCount" : 300,
            "transportType" : "amqpWebSockets",
            "webProxy" : "https://proxyserver:8080",
            "customEndpointAddress" : "amqps://company.gateway.local",
            "initialOffsetOptions" : {
                "type" : "fromStart",
                "enqueuedTimeUtc" : ""
            },
            "clientRetryOptions":{
                "mode" : "exponential",
                "tryTimeout" : "00:01:00",
                "delay" : "00:00:00.80",
                "maximumDelay" : "00:01:00",
                "maximumRetries" : 3
            }
        }
    }
}  
속성 기본값 설명
maxEventBatchSize 10 단일 호출에 대한 일괄 처리에 포함될 최대 이벤트 수입니다. 최소한 1 이상이어야 합니다.
batchCheckpointFrequency 1 이벤트 허브에 대한 검사점을 만들기 전에 처리할 일괄 처리 수입니다.
prefetchCount 300 Event Hubs에서 간절히 요청하고 네트워크 작업을 기다리는 것을 피하기 위해 읽기를 허용하기 위해 로컬 캐시에 보관할 이벤트 수
transportType amqpTcp Event Hubs와 통신하는 데 사용되는 프로토콜 및 전송입니다. 사용 가능한 옵션: amqpTcp, amqpWebSockets
webProxy 웹 소켓을 통해 Event Hubs와 통신하는 데 사용할 프록시입니다. 프록시는 amqpTcp 전송과 함께 사용할 수 없습니다.
customEndpointAddress Event Hubs에 대한 연결을 설정할 때 사용할 주소로 네트워크 요청이 애플리케이션 게이트웨이 또는 호스트 환경에 필요한 다른 경로를 통해 라우팅될 수 있습니다. 이벤트 허브의 정규화된 네임스페이스는 사용자 지정 엔드포인트 주소가 사용될 때 여전히 필요하며 명시적으로 또는 연결 문자열을 통해 지정해야 합니다.
initialOffsetOptions/type fromStart 검사점이 스토리지에 없을 때 처리를 시작할 이벤트 스트림의 위치입니다. 모든 파티션에 적용됩니다. 자세한 내용은 OffsetType 설명서를 참조하세요. 사용 가능한 옵션: fromStart, fromEnd, fromEnqueuedTime
initialOffsetOptions/enqueuedTimeUtc 처리를 시작할 스트림의 이벤트 큐에 넣은 시간을 지정합니다. initialOffsetOptions/typefromEnqueuedTime로 구성된 경우 이 설정은 필수입니다. DateTime.Parse()에서 지원하는 모든 형식(예: 2020-10-26T20:31Z)의 시간을 지원합니다. 명확하게 하기 위해 표준 시간대도 지정해야 합니다. 시간대가 지정되지 않은 경우 함수는 Azure에서 실행될 때 UTC인 함수 앱을 실행하는 머신의 로컬 시간대를 가정합니다.
clientRetryOptions/mode exponential 다시 시도 지연을 계산하는 데 사용하는 방법입니다. 지수 모드는 다시 시도하기 전에 대기하는 기간을 증가시키는 백오프 전략에 따라 지연 시간으로 다시 시도합니다. 고정 모드는 각 지연 시간이 일관된 고정 간격으로 다시 시도합니다. 사용 가능한 옵션: exponential, fixed
clientRetryOptions/tryTimeout 00:01:00 시도당 Event Hubs 작업이 완료될 때까지 대기하는 최대 기간입니다.
clientRetryOptions/delay 00:00:00.80 다시 시도 사이에 적용할 지연 또는 백오프 요소입니다.
clientRetryOptions/maximumDelay 00:00:01 다시 시도 사이에 허용되는 최대 지연입니다.
clientRetryOptions/maximumRetries 3 연결된 작업이 실패한 것으로 간주하기 전 최대 다시 시도 횟수입니다.

Azure Functions 2.x 이상에서 host.json의 참조는 Azure Functions에 대한 host.json 참조를 확인하세요.

다음 단계