Back-End/Kafka
-
[Spring-kafka] MSA 환경에서 토픽 이름에 맞게 KafkaMessage 역직렬화하여 수신하기Back-End/Kafka 2024. 10. 13. 21:15
개요 Spring-kafka에서, @KafkaListener 를 활용하여 Consumer Record를 수신 하는 방법은 다양하다. 특히, 내가 원하는 메세지포멧에 맞게 serialize 및 deserialize 하는 과정을 잘 설정하여 비즈니스 로직 단에서의 내가 원하는 타입의 dto를 바로 사용하는 것은 생산성 향상에 아주 큰 도움이 된다. 그래서 공식문서와 레퍼런스들을 참고해 가면서 찾아낸 몇 가지 방법들을 소개해보려 한다. 1. KafkaListenerContainerFactory 설정값에서, 내가 원하는 클래스의 deserializer를 직접 설정하기 가장 간단한 방법이다. @Configurationclass KafkaConsumerConfigV1 { @Bean fun ka..
-
웹 크롤러에 Kafka 도입(2)Back-End/Kafka 2022. 4. 1. 15:37
자동 토픽 생성 - 크롤러에 필요한 토픽은 총 2개이다. "queue-html", "reverse-queue-html" - 2개의 토픽을 CLI를 통해 생성할 수 있으나, html-worker를 실행하면서 동시에 만들어질 수 있도록 설정을 해 본다. @Bean public KafkaAdmin.NewTopics crawlerTopics(){ return new KafkaAdmin.NewTopics( TopicBuilder.name(KafkaTopicConfig.QUEUE_HTML).build(), TopicBuilder.name(KafkaTopicConfig.REVERSE_QUEUE_HTML).build() ); } 간단하게 KafkaAdmin.newTopics를 빈으로 등록 해 주면, 어플리케이션이 실행..
-
웹 크롤러에 Kafka 도입Back-End/Kafka 2022. 3. 30. 15:40
수습 기간 프로젝트로 진행한 웹 크롤러에 RabbitMQ에 이어서 Kafka를 넣기로 결정. 원래는 consumer group이 하나라서 메세지가 재활용되지 않고, 적은 데이터에서는 Kafka보다 우위이기 때문에 RabbitMQ를 사용하기로 했지만, Kafka를 그냥 써 보고 싶어서 브랜치를 하나 따서 Kafka를 사용해서 성능을 비교하기로 했다. 간단한 Flow - 카프카 브로커 URL 부트스트랩 : 카프카 프로듀서는 카프카 클러스터에 대한 메타데이터를 가져오기 위해 최소 하나 이상의 브로커에 연결한다. 프로듀서가 연결하길 원하는 첫 번째 브로커가 다운될 경우를 대비하여 보통 한개 이상의 브로커 URL 리스트를 설정한다. - 데이터 직렬화 : 카프카는 TCP 기반의 데이터 송수신을 위해 이진 프로토콜을..
-
kafka란?Back-End/Kafka 2021. 10. 21. 20:54
공식 문서를 보면, kafka는 다음과 같이 정의되어 있다. Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. kafka와 RabbitMQ의 성능 비교 https://www.confluent.io/blog/kafka-fastest-messaging-system/ - source application은 kafka에 data를 전송하고, target application은 kafka에서 ..