로컬 환경에서 실험을 위해 주키퍼 1개, 카프카 브로커 1개를 docker-compose를 사용해 설치한다.
# docker-compose.yml
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
위의 docker-compose를 사용해 container를 구동시킨다.
$ docker-compose -f docker-compose.yml up -d
kafka의 topic을 생성해 줘야한다. (내 topic : kafka-market) docker 내부에서 커맨드를 실행할거면 kafka-topics 부터 입력하면된다.
# topic 생성
$ docker-compose exec kafka kafka-topics --create --topic kafka-market --bootstrap-server kafka:9092 --replication-factor 1 --partitions 1
# topic 생성 확인
$ docker-compose exec kafka kafka-topics --describe --topic kafka-market --bootstrap-server kafka:9092
이렇게 하면 나는 kafka broker 한대를 만들었고, kafka-market 이라는 topic을 생성했다.

from slow 정신을 따라 우선 stomp 프로토콜부터 구현하고 kafka를 연결해보자. 두개의 파일을 생성한다.
build.gradle 추가할 의존성
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.springframework.kafka:spring-kafka'
여기서 3개의 설정을 해주고있다.
registry.addEndpoint("/ws-market")