본문 바로가기
Infra System

Common Lib Stub - Inner Architecture

by kellis 2020. 10. 14.

Inner Architecture에 속하는 애플리케이션으로, Kafka Management를 수행하는 프로젝트입니다. 

 

ManagementTopicListener

비즈니스 어플리케이션명으로 시작하는 카프카 토픽을 구독합니다. 

 

[KafkaListener]

@Component
class ManagementTopicListener {
    @KafkaListener(topics = ["\${spring.application.name}.management.topic"])
    fun listen(message: ManagedMessage) {
        println("received : $message")
}

자식 어플리케이션에서 설정

 

(1) yml 설정

어플리케이션명을 기준으로 토픽을 구독하기 때문에 yml 설정에서 애플리케이션명 정보를 추가해주어야 합니다. 

spring:
  application:
    name: {어플리케이션명}

 

Kafka topic management 기능을 수행하기 때문에 카프카 설정이 필요하며, 아래에서 사용된 설정은 프로젝트 성격에 따라 변경될 수 있습니다. 

kafka:
    admin:
      properties:
        auto.create.topics.enable: true
    template:
      default-topic: {디폴트 토픽명}
    consumer:
      bootstrap-servers:
        - {서버IP:포트}
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
      group-id: {그룹ID}
      properties:
        spring:
          json:
            trusted:
              packages: "*"
            value:
              default:
                type: java.lang.String
    producer:
      bootstrap-servers:
        - {서버IP:포트}
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

 

(2) 컴포넌트 스캔 설정

common-lib-stub을 의존하는 모든 자식 비즈니스 어플리케이션에서는 scanBasePackages에 common-lib-stub의 패키지 경로를 반드시 기재해주어야 합니다. 

@SpringBootApplication(scanBasePackages = [{프로젝트 루트 경로},"kr.sys4u.lab.aircommonlib"])

 

정상 동작시

 

common-lib-stub을 의존하고 있는 비즈니스 어플리케이션이 정상 동작할 경우, 프로젝트를 구동했을 때 아래와 같은 로그가 출력됩니다. 

partitions assigned: [{비즈니스어플리케이션명}.management.topic-0]

'Infra System' 카테고리의 다른 글

MongoDB based Prototype - Inner Architecture  (0) 2020.10.14
MariaDB based Prototype - Inner Architecture  (0) 2020.10.14
Application Dependency Declaration  (0) 2020.10.14
nexus install on kubernetes  (0) 2020.10.13
nexus install on ec2  (0) 2020.10.13

댓글