consumer

    Kafka offset에 대해서

    모든 소스 코드는 https://github.com/lkimilhol/kotlin-kafka-toy에서 확인 가능합니다! 안녕하세요. 이번에는 Kafka의 offset에 대해서 알아볼까 합니다. Kafka 메시지를 처리하는 도중 예외를 만난다면 어떻게 될지, 그리고 offset 관련 옵션 설정에 따라서 어떻게 변할지 공부해보려고 합니다. 이는 실제 Kafka를 이용하여 실제 서비스를 할 때도 많은 도움이 될 것이라 생각합니다. 1. offset이란 무엇일까? offset이란 무엇일까요? 바로 consumer에서 메시지를 어디까지 읽었는지 저장하는 값 이라고 볼 수 있을거 같네요. 만약 offset=4 인 경우 offset 0, 1, 2, 3은 메시지를 읽은 것으로 생각 할 수 있습니다. 위 그림과 같이 ..

    Kafka 메시지 순서 보장 확인해보기

    모든 소스 코드는 https://github.com/lkimilhol/kotlin-kafka-toy 에서 확인 가능합니다. 오늘의 고민 내용은 카프카를 통하여 메시지를 순서대로 받을 수 있을까 입니다. 사실 이는 가능한데요. 카프카의 파티션을 하나만 사용한다면 어렵지 않게 순서를 보장 할 수 있습니다. 하지만 이는 카프카의 성능을 100% 발휘 할 순 없는 구조라고 생각됩니다. 천천히 고민해 보도록 하겠습니다. 1. 성능을 어떻게 보장할까? 카프카의 파티션과 컨슈머를 생각해보겠습니다. 아래 사진은 파티션 3개가 컨슈머 3개와 1:1로 매핑되어 있는데요. 카프카의 프로듀서(producer)가 키를 지정하여 각 파티션으로 프로듀스 되었고, 컨슈머가 이 토픽을 컨슘하여 동작하는 방식입니다. 저 사진에서 파티션..