Azure Functions에 대한 Apache Kafka 바인딩 개요

Azure Functions용 Kafka 확장을 통해 출력 바인딩을 사용하여 Apache Kafka 토픽에 값을 쓸 수 있습니다. 트리거를 사용하여 Kafka 토픽의 메시지에 대한 응답으로 함수를 호출할 수도 있습니다.

중요

Kafka 바인딩은 탄력적 프리미엄 플랜전용(App Service) 플랜의 Functions에만 사용할 수 있습니다. Functions 런타임 버전 3.x 이상에서만 지원됩니다.

작업 Type
새 Kafka 이벤트를 기반으로 함수를 실행합니다. 트리거
Kafka 이벤트 스트림에 씁니다. 출력 바인딩

확장 설치

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

Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.

NuGet 패키지를 설치하여 프로젝트에 확장을 추가합니다.

번들 설치

Kafka 확장은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. Functions 버전 3.x 이상을 대상으로 하는 프로젝트를 만들 때 이 번들이 이미 설치되어 있어야 합니다. 자세한 내용은 확장 번들을 참조하세요.

런타임 스케일링 사용

Kafka 트리거 및 바인딩을 사용할 때 함수가 Premium 계획에서 제대로 확장되도록 하려면 런타임 확장 모니터링을 사용하도록 설정해야 합니다.

Azure Portal의 함수 앱에서 구성을 선택하고 함수 런타임 설정 탭에서 런타임 확장 모니터링켜기로 설정합니다.

런타임 스케일링을 사용하도록 설정하는 Azure Portal 패널의 스크린샷

host.json 설정

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

{
    "version": "2.0",
    "extensions": {
        "kafka": {
            "maxBatchSize": 64,
            "SubscriberIntervalInSeconds": 1,
            "ExecutorChannelCapacity": 1,
            "ChannelFullRetryIntervalInMs": 50
        }
    }
}

속성 기본값 Type 설명
ChannelFullRetryIntervalInMs 50 트리거 용량이 있는 채널에 항목을 추가하려고 할 때 사용되는 구독자 재시도 간격(밀리초)을 정의합니다.
ExecutorChannelCapacity 1 모두 채널 메시지 용량을 정의합니다. 용량에 도달하면 함수가 따라잡을 때까지 Kafka 구독자가 일시 중지됩니다.
MaxBatchSize 64 트리거 Kafka 트리거 함수를 호출할 때의 최대 일괄 처리 크기입니다.
SubscriberIntervalInSeconds 1 트리거 들어오는 메시지가 함수당 실행되는 최소 빈도(초)를 정의합니다. 메시지 볼륨이 MaxBatchSize / SubscriberIntervalInSeconds 미만인 경우에만

Apache Kafka C/C++ 클라이언트 라이브러리에서 상속되는 다음 속성은 트리거 또는 출력 바인딩 및 트리거 모두에 대해 host.json의 kafka 섹션에서도 지원됩니다.

속성 적용 대상 librdkafka 등가
AutoCommitIntervalMs 트리거 auto.commit.interval.ms
AutoOffsetReset 트리거 auto.offset.reset
FetchMaxBytes 트리거 fetch.max.bytes
LibkafkaDebug 모두 debug
MaxPartitionFetchBytes 트리거 max.partition.fetch.bytes
MaxPollIntervalMs 트리거 max.poll.interval.ms
MetadataMaxAgeMs 모두 metadata.max.age.ms
QueuedMinMessages 트리거 queued.min.messages
QueuedMaxMessagesKbytes 트리거 queued.max.messages.kbytes
ReconnectBackoffMs 트리거 reconnect.backoff.max.ms
ReconnectBackoffMaxMs 트리거 reconnect.backoff.max.ms
SessionTimeoutMs 트리거 session.timeout.ms
SocketKeepaliveEnable 모두 socket.keepalive.enable
StatisticsIntervalMs 트리거 statistics.interval.ms

다음 단계