Java 윈도우에 카프카 설치 및 테스트 하기. (Installing Kafka on Windows.)
페이지 정보
본문
MPA 또는 OEE(Overall Equipment Effectiveness, 설비 종합 효율)라고 부르는 프로젝트를 진행중입니다. MPA보다는 OEE가 더 익숙할거예요. 아무튼, OEE를 하기 위해 설비로부터 데이타를 안정적으로 수신할 수 있어야 합니다. 그래서, 서버와 장비간의 트랜젝션 처리(보상 트렌잭션이라고도 함)에 카프카(Kafka)를 이용합니다. 뭐~ TibRV를 더 많이 사용하긴 하지만요. 이런 종류의 API들은 대부분 ActiveMQ, RabbitMQ등등... 메세지 버스 미들웨어를 주로 사용합니다. 아무튼, 카프카가 결합도도 낮고 속도가 빠르다고 해서 많이 도입하고 있는 추세인건 맞는거 같습니다. 아래 링크에서 카프카를 다운로드 하세요.
[ 카프카 다운로드 ]
적당한 위치에 압축을 풀어준 후 bin/windows 폴더로 이동합니다. 윈도우 배치 파일(bat)이 많이 보일겁니다.
편의를 위해 이 폴더를 E드라이브로 옮겨 두었고, 폴더명에서 버전은 버렸습니다.
카프카를 실행하기 전에 간단한 개념 정도는 알고 가는게 좋을듯 합니다. 저도 인터넷을 찾아보면서 정리하는 내용입니다. 당연히 오류가 있을 수 있습니다^^; 카프카에서 브로커(Broker)는 카프카 서버를 말합니다. 동일 노드 내에서 여러개의 브로커를 띄울 수 있고, 이렇게 분산된 여러개의 브로커 메세지 큐(Message Queue)를 관리해주는 역할이 주키퍼(Zookeeper)입니다. 카프카를 실행하기전에 주키퍼를 반드시 먼저 실행해야 합니다. CMD를 관리자 권한으로 실행하세요. 카프카가 있는 위치로 이동합니다.
E:\kafka\bin\windows
e:
주키퍼를 실행하세요. Windows 보안 경고가 표시되면, 액세스 허용을 클릭 해줍니다.
zookeeper-server-start.bat ../../config/zookeeper.properties
CMD를 하나 더 실행해서 위와 동일하게 카프카 서버를 실행 해줍니다.
kafka-server-start.bat ../../config/server.properties
여기서 주의할점은 주키퍼와 카프카를 실행한 CMD 창을 닫으면 안된다는 것입니다. 이 창을 닫으면 서버도 같이 죽기 때문에 실행 상태로 두어야 합니다. 또한, Ctrl+C를 눌러서 중지시켜도 안됩니다. 주키퍼와 카프카가 실행중인지 확인 해볼까요? CMD를 하나 더 열고, 아래 명령을 실행합니다.
netstat -a
주키퍼는 2181 포트를 사용하고, 이 정보는 properties 파일에서 확인이 가능합니다. 카프카는 9092 포트를 사용하고 정보 확인은 동일합니다.
# the port at which the clients will connect
clientPort=2181
이렇게해서 카프카 설치를 완료 했습니다. 정상 동작하는지 확인을 해봐야겠죠? Publisher(게시자), Subscriber(구독자) 컨셉에 맞게 Topic을 생성하고 Topic에 메세지를 보낸 후 이 메세지를 가져오는 방법을 알아보도록 하겠습니다. 새로운 CMD를 열고, 카프카에 새로운 토픽을 생성 해줍니다.
kafka-topics.bat --create --topic ngm-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 4
생성한 토픽에 메세지를 보내려면 프로듀서(Producer)를 사용합니다. 토픽을 열고, 메세지를 보냅니다. 컨슈머(Consumer)가 봐주기를 바라고 메세지를 쓰는 것입니다. 계속해서 메세지를 보낼 수 있습니다. 일단 아래와 같이 토픽을 열고, 메세지를 써보세요.
kafka-console-producer.bat --broker-list localhost:9092 --topic ngm-topic
컨슈머를 이용해서 토픽에 있는 메세지를 가져오도록 합시다~ 새로운 CMD를 하나 더 만들고, 아래와 같이 컨슈머를 실행 해주세요. --from-beginning 옵션은 기존에 발행한 메세지도 모두 가져오도록 합니다. 그래서, 아래 그림과 같이 컨슈머를 나중에 실행해도 모든 메세지를 가져오게 됩니다.
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic ngm-topic --from-beginning
프로듀서에 메세지를 보내면, 아래 컨슈머가 받는걸 알 수 있습니다.
제가 일하는 쪽은 대부분 TibRV(랑데뷰, Rendezvous)를 사용하고 있는데요. 이게 너무 비싸다보니 ActiveMQ나 ZeroMQ, RabbitMQ, AmazonMQ와 같은 무료 미들웨어를 사용합니다. 웹쪽은 대부분 카프카(Kafka)를 이용하는거 같네요. 시대 흐름에 맞게 학습해야 할 내용도 점점 많아지고, 예전에 잘 사용하던 기술들이 쓸모 없어지는 상황도 계속해서 발생합니다. 공부를 멈추면... 더이상 개발자를 할 수 없는 환경인거 같아요^^;
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글Java - 이클립스 프로젝트 생성 및 실행 방법. 22.10.12
- 다음글자바 프로젝트 모델 노가다를 줄여주는 롬복 사용하기. (A lombok that takes you away from creating getter setters.) 22.02.18
댓글목록
등록된 댓글이 없습니다.