Docs Menu
Docs Home
/
MongoDB Kafka Connector
/ /

Error Handling

이 페이지의 내용

  • 개요
  • 오류 처리
  • 모든 오류에 대해 중지
  • 모든 오류 허용
  • 데이터 오류 허용
  • 주제에 오류 및 잘못된 메시지 쓰기
  • 로그 오류
  • 커넥터 수준에서 오류 처리

이 가이드에서는 MongoDB Kafka connector의 오류를 처리하는 방법에 대해 알아볼 수 있습니다. 다음 목록은 싱크 connector에 오류가 발생하는 몇 가지 일반적인 시나리오를 보여줍니다.

  • Avro 직렬화를 사용하여 주제에 쓰고 Protobuf 역직렬화를 사용하여 해당 주제의 메시지 디코딩을 시도합니다.

  • 변경 이벤트 문서가 포함되지 않은 메시지에 변경 데이터 캡처 핸들러를 사용하는 경우

  • 수신 문서에 잘못된 단일 메시지 변환을 적용합니다.

싱크 connector에 오류가 발생하면 두 가지 조치를 수행합니다.

  • 오류 처리

  • 오류 로그

connector에 오류가 발생하면 어떤 방식으로든 오류를 처리해야 합니다. 당신의 싱크 connector는 오류에 대한 응답으로 다음을 수행할 수 있습니다.

기본적으로 싱크 connector는 오류가 발생하면 종료되고 메시지 처리를 중지합니다. 이것은 싱크 connector에 오류가 발생한 것이 심각한 문제를 나타내는 경우에 좋은 옵션입니다.

싱크 커넥터가 충돌하면 다음 조치 중 하나를 수행한 다음 커넥터를 다시 시작하여 메시지 처리를 재개해야 합니다.

  • 싱크 connector 가 일시적으로 오류를 허용하도록 허용

  • 메시지를 처리할 수 있도록 싱크 커넥터의 구성을 업데이트하세요.

  • 주제에서 잘못된 메시지 제거

errors.tolerance 옵션에 어떤 값도 지정하지 않거나 connector 구성에 다음을 추가하여 오류가 발생했을 때 싱크 connector가 중지되도록 할 수 있습니다.

errors.tolerance=none

모든 오류를 허용하고 메시지 처리를 중단하지 않도록 싱크 connector를 구성할 수 있습니다. 이는 connector를 빠르게 시작하고 실행할 수 있는 좋은 옵션이지만 문제가 발생하면 피드백을 받지 못하므로 connector에 문제가 발생하지 않을 수 있습니다.

다음 옵션을 지정하여 싱크 connector가 모든 오류를 허용하도록 할 수 있습니다.

errors.tolerance=all

경고

순서가 지정된 대량 쓰기로 인해 메시지 건너뛰기가 발생할 수 있음

connector 가 오류를 허용하도록 설정하다 하고 순서가 지정된 대량 쓰기를 사용하면 데이터가 손실될 수 있습니다. connector 가 오류를 허용하도록 설정하다 하고 순서가 지정되지 않은 대량 쓰기를 사용하면 데이터 손실이 줄어듭니다. 대량 쓰기 (write) 작업에 학습 보려면 쓰기 모델 전략 페이지를 참조하세요.

데이터 오류만 허용하고 다른 모든 오류에 대한 처리는 중지하도록 싱크 connector 를 구성할 수 있습니다. 이 설정을 사용하면 connector 는 데드 레터 대기열이 구성된 경우 해당 대기열로 데이터 오류를 보냅니다.

다음 옵션을 지정하여 데이터 오류만 허용하도록 싱크 connector 를 구성합니다.

errors.tolerance=data

추가로 검사하거나 처리할 수 있도록 데드 레터 큐 라는 주제에 오류 및 잘못된 메시지를 기록하도록 싱크 connector를 구성할 수 있습니다. 데드 레터 큐는 Apache Kafka와 같은 메시지 큐 시스템에서 시스템이 충돌하거나 오류를 무시하는 대신 잘못된 메시지를 라우팅하는 위치입니다. 데드 레터 큐는 프로그램을 중지한다는 피드백과 모든 오류를 허용하는 내구성을 결합한 것으로, 대부분의 배포에서 좋은 오류 처리 점이 될 수 있습니다.

다음 옵션을 지정하여 connector가 모든 잘못된 메시지를 데드 레터 큐로 라우팅하도록 할 수 있습니다.

errors.tolerance=all
errors.deadletterqueue.topic.name=<name of topic to use as dead letter queue>

오류의 구체적인 이유와 잘못된 메시지를 포함하려면 다음 옵션을 사용하세요.

errors.deadletterqueue.context.headers.enable=true

데드 레터 대기열에 학습 보려면 데드 레터 대기열에 대한 Confluent의 가이드 를 참조하세요.

다른 데드 레터 큐 구성 예시를 보려면 데드 레터 큐 구성 예시를 참조하세요.

connector가 데드 레터 큐에 컨텍스트 헤더로 정의하고 쓰는 예외에 대해 알아보려면 대량 쓰기 예외를 참조하세요.

허용되는 오류와 허용되지 않는 오류를 로그 파일에 기록할 수 있습니다. 탭을 클릭하여 오류를 기록하는 방법을 확인합니다:

다음 기본 옵션은 Kafka Connect가 애플리케이션 로그에 허용되지 않는 오류만 기록하도록 합니다.

errors.log.enable=false

다음 옵션은 Kafka Connect가 허용되는 오류와 허용되지 않는 오류를 모두 애플리케이션 로그 에 쓰기 (write) 하도록 합니다.

errors.log.enable=true

메시지 주제 및 오프셋과 같은 메시지에 대한 메타데이터를 기록하려면 다음 옵션을 사용하세요.

errors.log.include.messages=true

자세한 내용은 Confluent의 Kafka Connect를 사용한 로깅 가이드를 참조하세요.

싱크 connector는 connector 수준에서 오류 처리를 구성할 수 있는 옵션을 제공합니다. 옵션은 다음과 같습니다:

Kafka 연결 옵션
MongoDB Kafka Connector 옵션
errors.tolerance
mongo.errors.tolerance
errors.log.enable
mongo.errors.log.enable

connector가 Kafka Connect 프레임워크와 관련된 오류와 MongoDB와 관련된 오류에 다르게 응답하도록 하려는 경우 이러한 옵션을 사용하는 것이 좋습니다.

자세한 내용은 다음 리소스를 참조하세요.

돌아가기

포스트 프로세서