728x90

Backend/Kafka 5

Kafka, Kafka Streams

Kafka 를 유용하게 사용하고 있었고 웹플럭스를 활용할 신규 서비스에도 Kafka 를 적용하려고 하고 있었는데 Kafka Streams 라는 용어를 접하게 됐다. 처리속도가 빠르고 실시간 처리에 유리하다는데 Kafka 와는 다른건가? 더 좋은건가? 명확하게 구분이 되지 않아 서칭을 좀 해봤다. 일단 Kafka Streams 는 Consumer 에 포함되는 구성요소이다. 이는 Kafka Streams 를 사용하더라도 최초 Producer 는 기존에 Producer 작성하듯이 하면 된다는 말이다. 일반적으로 Consumer 에서 작업이 끝나지 않고 추가 토픽으로 전달이 필요한 경우 Kafka Streams 를 활용하는 것 같다. 그렇다면 Kafka Streams 를 사용하면 무슨 이득이 있는건가? 구조가 ..

Backend/Kafka 2022.09.07

[Kafka] Consumer Error Handling(retry, recovery)

spring-kafka 을 통해 Consumer 구현하면 컨슈밍이 실패했을 때 기본적으로 최초 요청을 포함해서 10회까지 재시도한다. 그리고 재시도가 모두 실패하면 해당 메시지 skip 된다. 만약 이러한 정책을 커스텀하게 운영하고 싶다면 ConcurrentKafkaListenerContainerFactory 을 재정의하면 된다. spring-kafka 2.8 이전 버전에서는 setRetryTemplate 을 통해 retry 정책을 정의하고 setRecoveryCallback 를 통해 recovery 로직을 정의하면 됐다. 그런데 spring-kafka 2.8 버전부터 setRetryTemplate 은 deprecated 되었고, setRecoveryCallback 는 아직 있지만 대부분 아래와 같이 s..

Backend/Kafka 2022.02.15

[Kafka] multi KafkaTemplate

SpringBoot 에서 Kafka 연동은 매우 간단하다. org.springframework.kafka:spring-kafka 의존성을 추가하고 application.yml 에 Kafka 관련 구성정보만 추가하면 된다. 그런데 서로 다른 여러개의 브로커를 동시에 참조해야 할 때는 이 방법을 사용할 수 없다. application.yml 에 Kafka 브로커 정보는 spring.kafka.bootstrap-servers 에 지정하고 "," 로 구분된 여러개의 브로커 host를 지정할 수도 있긴 한데 이는 HA, LB를 위한 구성으로 순차적으로 접근하되 정상적인 상태의 단일 브로커만 연결된다. 또한 HA, LB를 위한 구성인만큼 지정된 브로커들은 기본적으로 모두 동일한 토픽이 존재해야 한다. 서로 다른 여..

Backend/Kafka 2022.02.11

[Kafka] 삽질 기록..

카프카 프로듀서와 컨슈머를 예전에 개발한 경험이 있는데 이번에 다시 개발하려니 예전에 잘못알고 있던 것도 있었고 새로 알게된 것 중 모호했던 것들을 정리한다. 1. spring-kafka, spring-cloud-stream 예전에 프로듀서와 컨슈머를 만들 때에는 spring-kafka 의존성을 사용했다. 그런데 리서치하다보니 spring-cloud-stream 라는 의존성도 있었다. 사실 이 중 뭘 사용해도 상관은 없다. 차이가 있다면 spring-kafka 는 메시지큐 중 Kafka 에 종속적이고 spring-cloud-stream 는 Kafka 외에 RabbitMQ 같은 다른 메시지큐도 지원하기 때문에 구성이 좀 더 추상적이다. 이에 구현은 spring-kafka 이 더 쉽지만 기능은 spring-..

Backend/Kafka 2022.02.10

[Kafka] 카프카 명령어 정리

카프카 설치 폴더 의 bin 폴더로 이동하면 카프카 상태를 확인할 수 있는 몇가지 쉘 들이 있다. 결국 이를 이용하는 것이 카프카 명령어다. 토픽리스트 확인 ./kafka-topics.sh --list --bootstrap-server ${broker-host} 토픽생성 ./kafka-topics.sh --create --topic ${topic-name} --zookeeper ${zookeeper-host} --partitions 1 --replication-factor 1 토픽 상세보기 ./kafka-topics.sh --describe --bootstrap-server ${broker-host} --topic ${topic-name} 토픽에 데이터 넣기 ./kafka-console-producer...

Backend/Kafka 2021.12.30
728x90