Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- refetchOnWindowFocus
- active blur
- 자바스크립트 호이스팅
- 리액트 가상키보드
- net::R_SSL_PROTOCOL_ERROR
- 자바스크립트 중첩함수
- 자바스
- activeElement
- AWS 로드밸런서
- 자바스크립트 렉시컬스코프
- 퍼듀대학교
- ios 크로스브라우징
- K-SW SQUARE
- Purdue university
- React Query
- 모던 자바스크립트 Deep Dive
- 로현 청춘의개발
- 자바스크립트 옵셔널 체이닝
- 자바스크립트 null 병합
- 모두의시간
- EC2 HTTPS로 연결
- 사파리 가상키보드
- 자바스크립트 스코프 체인
- but requested an insecure XMLHttpRequest endpoint 'http://~~’. This request has been blocked; the content must be served over HTTPS.
- 리액트 쿼리
- touchmove 이벤트
- 자바스크립트
- 자바스크립트 논리합 연산자
- Kafka
- 자바스크립트 변수 호이스팅
Archives
- Today
- Total
개발 여행자, 현
[Kafka, Springboot] 스프링부트 카프카 연동하기 본문
Springboot + Kafka 연동하기 (기본세팅)
1. https://start.spring.io 를 통해 스프링부트 프로젝트 생성
2. application.yml 파일 수정
- spring.kafka.consumer
- bootstrap-servers
: Kafka 클러스터에 대한 초기 연결에 사용할 호스트:포트쌍의 쉼표로 구분된 목록
: 글로벌 설정이 있어도, consumer.bootstrap-servers가 존재하면 consuemer 전용으로 오버라이딩 - group-id
: Consumer는 Consumer Group이 존재하기 때문에, 유일하게 식별 가능한 Consumer Group을 작성 - auto-offset-reset
: Kafka 서버에 초기 offset이 없거나, 서버에 현재 offset이 더 이상 없는 경우 수행할 작업을 작성
: Consumer Group의 Consumer는 메시지를 소비할 때 Topic내에 Partition에서 다음에 소비할 offset이 어디인지 공유를 하고 있다. 그런데 오류 등으로 인해. 이러한 offset 정보가 없어졌을 때 어떻게 offeset을 reset 할 것인지를 명시ㅎ한다.
1) latest : 가장 최근에 생산된 메시지로 offeset reset
2) earliest : 가장 오래된 메시지로 offeset reset3) none : offset 정보가 없으면 Exception 발생
직접 Kafka Server에 접근하여 offset을 reset할 수 있지만, Spring에서 제공해주는 방식은 위와 같음 - key-deserializer / value-deserializer
- Kafka에서 데이터를 받아올 때, key / value를 역직렬화
- 여기서 key와 value는 뒤에서 살펴볼 KafkaTemplate의 key, value를 의미
- 이 글에서는 메시지가 문자열 데이터이므로 StringDeserializer를 사용. JSON 데이터를 넘겨줄 것이라면 JsonDeserializer도 가능
- bootstrap-servers
- spring.kafka.producer
- bootstrap-servers
: consumer.bootstrap-servers와 동일한 내용이며, producer 전용으로 오버라이딩 하려면 작성 - key-serializer / value-serializer
: Kafka에 데이터를 보낼 때, key / value를 직렬화
: consumer에서 살펴본 key-deserializer, value-deserializer와 동일한 내용
- bootstrap-servers
3. KafkaController.java 파일 생성
-> GET 방식으로 /kafka 요청이 들어오면 KafkaProducer서비스를 실행
4. KafkaProducer.java 파일 생성
-> KafkaTemplate에 Topic명과 Message를 전달
-> KafkaTemplate.send() 메서드는 여러 개가 있지만, 파라미터로 Topic과 message만 전달하는 메소드가 실행
* MVP / Controller,Service,Repository란?
[출처] https://velog.io/@jybin96/Controller-Service-Repository-가-무엇일까
5. KafkaConsumer.java 파일 생성
-> Kafka로부터 메시지를 받으려면 @KafkaListener 어노테이션 붙이기
6. Message 주고받기 테스트
Postman을 이용하여 Springboot가 띄워져있는 http://127.0.0.1:8080/kakfa GET 호출
-> 콘솔에서 어떤 message 데이터를 넣었고 들어왔는지 확인가능 (Producer 작성코드)
그 후 터미널에서 new-topic 이름의 Topic을 확인할 수 있다.
$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic new-topic
'백엔드' 카테고리의 다른 글
[Docker] Docker Compose ELK 구축 (0) | 2023.02.28 |
---|---|
[ELK] ELK 설치 (0) | 2023.02.28 |
[Kafka] 카프카란? (0) | 2023.02.28 |