MQ 5

[kafkajs] consumer

이번에는 kafka consumer app을 설정해보겠습니다. import { Kafka, KafkaMessage, logLevel } from 'kafkajs' /** * kafka 인스턴스를 생성합니다. * clientId: 원하는 문자열 * brokers: docker-compose.yml에서 kafka 설정에 작성한 PLAINTEXT_HOST://localhost:29092, 29093, 29094로 지정했던 것을 넣습니다. * requestTimeout: kafka clinet가 broker로 데이터 전송 요청을 보낼때의 최대 소요 시간입니다. 이 시간이 초과하면 요청을 실패로 처리하고 에러를 반환합니다. * connectionTimeout: client와 broker 간 연결을 ..

MQ 2023.03.01

[kafkajs] kafka에 대한 간단한 소개

kafka 공식문서를 보고 부연설명을 붙인 글입니다. (https://kafka.js.org/docs/introduction) Cluster: Kafka가 여러개 돌아가는 단위 Broker: 단일 kafka 인스턴스 1개 Topic: 특정 주제에 대한 메세지를 담고 싶으면 Topic을 설정한다. 예를들어 'order' topic을 지정하여 주문 관련 메세지는 여기에 보낼 수 있다. Partition: 메세지 처리 단위. cluster를 구성했을 때, 하나의 토픽에 대해 다른 broker에 복제된 파티션이 생긴다. 이렇게 복제된 파티션이 있으면, 데이터 병렬처리가 가능하다. Producer: broker에 메세지를 보내는 주체 Consumer: broker에서 메세지를 받는 주체 Replica: 파티션을 ..

MQ 2023.02.26

[kafkajs] docker를 이용한 kafka clustering 셋팅 방법

처음에는 local에서 kafka를 띄웠었습니다. (도움받은 블로그: https://yooloo.tistory.com/68) 나중에는 docker로 띄우더라도, 처음에는 local에서 직접 노가다하며 띄워보고 싶었기 때문입니다. 그런데 clustering을 구성하려고 하니 설정파일을 일일이 변경을 해주거나, 명령어에 덧붙여야해서 결국 docker로 띄우기로 결정했습니다. 구글에 검색을 해서 다른 분들이 작성하신 글을 보고 따라하니, 첫 번째 난관에 부딪혔습니다. kafka에 대한 docker image의 종류가 여러개였기 때문입니다. 1. confluentinc/cp-kafka, confluentinc/cp-zookeeper 2. wurstmeister/kafka, wurstmeister/zookeepe..

MQ 2023.02.26

kafka 글을 작성하기 전에

회사에서는 RabbitMQ를 사용하고 있습니다. 개발자로 일을 시작한지 5달정도가 되었고, 코딩을 시작한지 1.5년정도가 되었기 때문에 회사에서 일을 하기 전까지는 RabbitMQ, Kafka 등에 대해 들어본적 이없었습니다. 단순히 부트캠프를 할 때, 간간히 카카오 현업 코치님께서 하시는 말씀 중 kafka라는 단어가 있어 머릿속에 놓여있을 뿐이였죠. 그런데 회사에서 제가 RabbitMQ consumer app을 리팩토링을 해볼 기회가 생겼고, 리팩토링 하며 RabbitMQ가 어떤 것인지 알게 되었습니다. 그리고 NestJS 카카오톡 오픈 채팅방에서 어떤 분께서 본인이 pub/sub pattern과 여러 기술 스택을 사용하여 토이프로젝트를 진행하는데, 도와주실 분이 없냐는 말씀을 하셨습니다. 그것을 보..

MQ 2023.02.26