Skip to content

eager20/ktorkafka

Repository files navigation

Ktor 기반 Kafka Client, Exposed, MapStruct with Configuration 설정.

처음엔 Ktor를 기반으로 Koin 이용해서 카프카 클라이언트 DI 해서만 쓸라고 했는데.... 일이 커졌다.

토이프로젝트?를 하면서 본것들.. 작업했을때 간단한 컨셉등을 정리해보려고한다. 요걸 하다 보니 느낀건.. 스프링부트가 하는일에 비해 너무 무거운건 아닐까? 노드도 이렇게 간단하고, 할거 다할거면 정말 노드 쓰는게 좋은거 아닌가? 라는 생각?

Injection Tech

구성하면서 솔루션내 팁?

  • Ktor

  • Koin

    • get()을 사용하면 컨테이너에 등록된 클래스명으로 자연스럽게 주입된다.
      • ex) Configuration 을 생성자로 받은곳에 get() 하면 Configuration 가 DI 된다.
  • exposed

    • DSL, DAO 방식 2가지가 있는데... (https://github.com/JetBrains/Exposed/wiki)
    • 데이터를 가져와 핸들링하면 DAO 방식을 사용해야 한다.
    • DSL은 코드상으로 처리(CUD) 처리는 가능하나 데이터화 해서 조회 하는데에는 한게가 있다.
    • DAO 방식으로 하면 object 외 Entity를 만들어야 하는데...
    • Entity로 값을 가져와 println 찍는건 문제가 없는데 (toList사용해야함~!)... Response 하려면 또 DTO에 담아줘야 한다. (당연한거지만...) 요기참조
  • MapStruct

    • EntityToDTO는 MapSturct를 이용했는데.. DSL Object를 이용한 MapStruct 매핑은 안되었지만.. DAO Entity를 이용한 MapStruct는 잘되서.. ㅋㅋㅋ 다행이였다.
  • TEST

    • Koin으로 테스트 할르믄 요걸 만들어 상속받아 사용해야 했다.
    • EndPoint 테스트도 요렇게 할 수 있어서 좋았다~!

TABLE

CREATE TABLE `member` (
`mem_seq` bigint(20) NOT NULL AUTO_INCREMENT,
`alias` varchar(100) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`password` varchar(200) DEFAULT NULL,
`tel` varchar(200) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`sex` varchar(100) DEFAULT NULL,
PRIMARY KEY (`mem_seq`),
UNIQUE KEY `member_email_IDX` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4;

Kafka 로컬 설정 시 주의사항.

시작종료

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
bin/kafka-server-start.sh -daemon config/server.properties

토픽생성

  • 카프카에 토픽생성해야함. 예전처럼 주키퍼에 만들면 안됩~!!!!!!
  • 예전 처럼 주키퍼에 만들었다가 으....
bin/kafka-topics.sh --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --create --topic myTest

프로듀서, 컨슈머..

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic myTest
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 -from-beginning --topic myTest

쓰봉.

  • server.properties 안에 아래와 같이 바꿔야 함.
  • 아래꺼 몰라서 으....
listeners=PLAINTEXT://localhost:9092

  • 카프가랑 주키퍼 바로 죽여버리기 Shell
ps -ef | grep kafka | grep -v "grep" | awk '{print "kill -9 "$2}'| sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages