• Spring Kafka Retry

    Spring Kafka - Retrying Retrying Deliveries Spring Kafka에는 Retry 기능이 존재한다. Retry 기능을 사용하면 listener 메소드는 RetryingMessageListenerAdapter를 통해서 호출이 된다. Retry 기능을 사용하려면 RetryTemplate과 RecoveryCallback<Void>(callback은 설정하지 않아도 된다)를 container factory에 설정하면 된다. RetryTemplate과 RecoveryCallback<Void>에 대해서 더 자세히 알고 싶다면 spring-retry를 참고하자. 만약에 recovery callback을 등록하지 않으면, retry 실패시 예외는 컨테이너에게...


  • Kafka Offsets

    Kafka Offsets 본 글에서는 Consumer의 Offset에 대해 알아보도록 하자 Offsets and Consumer Position Kafka는 각각의 Record에 대해 오프셋을 가지고 있다. 이 오프셋은 파티션 내에서 Record에 대한 고유한 식별자로 사용된다. 또한 Consumer의 파티션내의 position를 나타낸다. 예를 들어 Consumer의 Position이 5인 경우에 오프셋이 0부터 4까지인 Record는 이미 처리하였음을 의미한다. 또한 다음 poll()에서...


  • Spring Kafka Transaction

    Spring Kafka Transaction Spring Kafka Transaction과 관련된 라이브러리를 정리한 글이다. 더 자세한 내용은 레퍼런스를 참고하길 바란다. Spring for Apache Kafka adds transaction supoort in several ways KafkaTransactionManager Transactional KafkaMessageListenerContainer Local Transaction with KafkaTemplate Transactions Transactions을 사용하려면 DefaultKafkaProducerFactory의 setTransactionIdPrefix 메소드를 통해서 transactionIdPrefix를 설정하면 된다. KafkaTemplate, KafkaTransactionManager는 Producer 생성을 DefaultKafkaProducerFactory에 위임한다. DefaultKafkaProducerFactory는...


  • Kafka Transaction

    Kafka Transaction Kafka Client 0.11에 추가된 Kafka Transaction에 대해 학습한 내용을 정리한 글이다 Overview of delivery semantics At least once semantics At least once는 말 그대로 메시지를 적어도 한 번 전달한다는 의미이다. 이 때 발생할 수 있는 문제점은 메시지가 중복해서 전달될 수 있다는 것이다. Messages are never lost but may...