4.8. 이벤트 전달
이벤트를 이벤트 싱크로 전달하지 못하는 경우 적용되는 이벤트 전달 매개변수를 구성할 수 있습니다. dead letter sink를 포함하여 이벤트 전달 매개변수를 구성하면 이벤트 싱크로 전달하지 못한 모든 이벤트를 재시도할 수 있습니다. 그렇지 않으면 전달되지 않은 이벤트가 삭제됩니다.
4.8.1. 채널 및 브로커에 대한 이벤트 전달 동작 패턴
다른 채널 및 브로커 유형에는 이벤트 전달에 사용되는 자체 동작 패턴이 있습니다.
4.8.1.1. Apache Kafka의 Knative 채널 및 브로커
이벤트가 Kafka 채널 또는 브로커 수신자에게 성공적으로 전달되면 수신자는 202
상태 코드로 응답합니다. 즉, 이벤트가 Kafka 주제 내부에 안전하게 저장되어 손실되지 않습니다.
수신자가 다른 상태 코드로 응답하는 경우 이벤트는 안전하게 저장되지 않으며 문제를 해결하기 위해 사용자가 단계를 수행해야 합니다.
4.8.2. 구성 가능한 이벤트 전달 매개변수
이벤트 전달을 위해 다음 매개변수를 구성할 수 있습니다.
- dead letter sink
-
이벤트가 전달되지 않으면 지정된 이벤트 싱크에 저장되도록
deadLetterSink
전달 매개변수를 구성할 수 있습니다. dead letter sink에 저장되지 않은 전달되지 않은 이벤트가 삭제됩니다. dead letter sink는 Knative 서비스, Kubernetes 서비스 또는 URI와 같은 Knative Eventing 싱크 계약을 준수하는 모든 주소 지정 가능한 오브젝트입니다. - retries
-
재시도 전달 매개변수를 정수 값으로 구성하여 이벤트가 dead letter sink로 전송되기 전에 전달을
retry
해야 하는 최소 횟수를 설정할 수 있습니다. - back off delay
-
backoffDelay
전달 매개변수를 설정하여 실패 후 이벤트 전달을 재시도하기 전에 시간 지연을 지정할 수 있습니다.backoffDelay
매개변수의 기간은 ISO 8601 형식을 사용하여 지정합니다. 예를 들어PT1S
는 1초 지연을 지정합니다. - back off policy
-
backoffPolicy
전달 매개 변수를 사용하여 재시도 정책을 지정할 수 있습니다. 정책을linear
또는exponential
로 지정할 수 있습니다.linear
백오프 정책을 사용하는 경우 백오프 지연은backoffDelay * <numberOfRetries>와 동일합니다
.exponential
백오프 정책을 사용하는 경우 백오프 지연은backoffDelay*2^<numberOfRetries>
와 동일합니다.
4.8.3. 이벤트 전달 매개변수 구성의 예
브로커
,트리거
,채널
및 서브스크립션
오브젝트에 대한 이벤트 전달 매개변수를 구성할 수 있습니다. 브로커 또는 채널에 대한 이벤트 전달 매개변수를 구성하는 경우 이러한 매개변수는 해당 오브젝트에 대해 트리거 또는 서브스크립션으로 전파됩니다. 트리거 또는 서브스크립션에 대한 이벤트 전달 매개변수를 설정하여 브로커 또는 채널 설정을 재정의할 수도 있습니다.
Broker
오브젝트의 예
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: ... spec: delivery: deadLetterSink: ref: apiVersion: eventing.knative.dev/v1alpha1 kind: KafkaSink name: <sink_name> backoffDelay: <duration> backoffPolicy: <policy_type> retry: <integer> ...
Trigger
오브젝트의 예
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: ... spec: broker: <broker_name> delivery: deadLetterSink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: <sink_name> backoffDelay: <duration> backoffPolicy: <policy_type> retry: <integer> ...
Channel
오브젝트의 예
apiVersion: messaging.knative.dev/v1 kind: Channel metadata: ... spec: delivery: deadLetterSink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: <sink_name> backoffDelay: <duration> backoffPolicy: <policy_type> retry: <integer> ...
Subscription
개체 예
apiVersion: messaging.knative.dev/v1 kind: Subscription metadata: ... spec: channel: apiVersion: messaging.knative.dev/v1 kind: Channel name: <channel_name> delivery: deadLetterSink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: <sink_name> backoffDelay: <duration> backoffPolicy: <policy_type> retry: <integer> ...
4.8.4. 트리거에 대한 이벤트 전달 순서 구성
Kafka 브로커를 사용하는 경우 트리거에서 이벤트 싱크로 이벤트의 전달 순서를 구성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Eventing, Knative Kafka가 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- Kafka 브로커는 클러스터에서 사용할 수 있도록 활성화되며 Kafka 브로커를 생성했습니다.
- 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
OpenShift(
oc
) CLI를 설치했습니다.
절차
Trigger
오브젝트를 생성하거나 수정하고kafka.eventing.knative.dev/delivery.order
주석을 설정합니다.apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: <trigger_name> annotations: kafka.eventing.knative.dev/delivery.order: ordered ...
지원되는 소비자 전달 보장은 다음과 같습니다.
순서 없음
- 정렬되지 않은 소비자는 적절한 오프셋 관리를 유지하면서 순서가 없는 메시지를 전달하는 비차단 소비자입니다.
순서
정렬된 소비자는 파티션의 다음 메시지를 전달하기 전에 CloudEvent 구독자의 성공적인 응답을 기다리는 파티션별 차단 소비자입니다.
기본 순서 보장은
순서가 지정되지 않습니다
.
Trigger
오브젝트를 적용합니다.$ oc apply -f <filename>