반응형

Kafka 4

Kafka를 이용한 실패처리 삽질 기록

이번 글에서는 Kafka DeadLetterQueue 관련하여 삽질했던 내용을 기록하는 글 입니다. 요구조건 1. 로직을 수행 중 실패할 경우 Repository에 데이터를 적재 2. 특정 주기마다 실패한 데이터를 처리 ( 실패하면 재처리 ) 결론 바쁘신 분들을 위해 결론부터 말씀드리자면 Kafka를 이용하여 특정 주기마다 데이터를 읽어와 처리하는 방법은 선택하지 않았습니다. 카프카는 실시간 데이터 처리 플랫폼 이유로는 카프카의 성격과는 맞지 않았습니다. 실시간 처리 플랫폼을 특정 주기마다 읽어온다는 것 자체가 어색하였습니다. 또한 다양한 시도를 통해 적합하지 않다고 생각하였습니다. 다양한 시도 RetryTemplate, ReplyTemplate, DeadLetterPublishingRecover 모두 ..

Study/message-queue 2022.06.09

[kafka] @KafkaListener를 이용한 Consumer 구현

Kotlin으로 Spring-Kafka 의존성을 주입받아 Producer를 구현하는 과정에 대해 정리한 글입니다. 모든 소스는 Github에 올려두었습니다. 목차 Consumer KafkaListener Annotation 설정 KafkaListener Annotation 사용방법 Simple POJO Listeners 파티션 할당 특정 파티션 InitialOffset 설정 수동 확인 ( Manual Acknowledgment ) Consumer Record Metadata Batch Listeners GroupId 1. Consumer 컨슈머는 카프카 클러스터( 파티션 )에서 저장된 데이터를 읽어오는 역할을 합니다. 구현 방법은 Message Listeners, @KafkaListener 두 가지로 가..

Study/message-queue 2021.08.26

[kafka] Concurrency 설정 기준 (ConcurrentMessageListenerContainer 사용)

들어가기전에 카프카를 사용하면서 Consumer 설정하는 하던 중 ConcurrentMessageListenerContainer를 선택해서 사용하였으나 Concurrency의 설정 기준 잡기가 모호하여 관련정보를 스터디하며 정리한 글입니다. 모든 소스는 Github에 올려두었습니다. 목차 토픽이 1개인 경우 파티션1, Concurrency1, Call3 파티션2, Concurrency2, Call3 파티션3, Concurrency6, Call6 결론 토픽이 3개인 경우 Concurrency 무조건 많다고 좋은게 아니다. 잘못된 생각 컨슈머에서 Concurrency가 무조건 많으면 많은 Message를 Concurrency 만큼 Listen할 수 있겠구나! 컨슈머에서 Concurrency, 즉 Thread..

Study/message-queue 2021.08.24

[kafka] KafkaTemplate을 이용한 Producer 구현

Kotlin으로 Spring-Kafka 의존성을 주입받아 Producer를 구현하는 과정에 대해 정리한 글입니다. 모든 소스는 Github에 올려두었습니다. 목차 KafkaTemplate 구성 KafkaTemplate 사용하여 Producer 구현 KafkaTemplate 원초적으로 Producer를 통해 Kafka에 Message를 Send하려면 KafkaProducer 인스턴스를 사용하여 send() 메서드를 호출해야합니다. KafkaTemplate은 KafkaProducer 감싸고 있는 인스턴스라고 생각하시면 이해하시기 편합니다. KafkaTemplate.send() 는 내부에서 결국 KafkaProducer 인스턴스의 send()를 호출하고 있습니다. 1. KafkaTemplate 구성 Kafka..

Study/message-queue 2021.08.20
728x90
반응형