Azure Functions에 대한 Apache Kafka 바인딩 개요
Azure Functions용 Kafka 확장을 통해 출력 바인딩을 사용하여 Apache Kafka 토픽에 값을 쓸 수 있습니다. 트리거를 사용하여 Kafka 토픽의 메시지에 대한 응답으로 함수를 호출할 수도 있습니다.
Important
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의 함수 앱에서 구성을 선택하고 함수 런타임 설정 탭에서 런타임 확장 모니터링을 켜기로 설정합니다.
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 |