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 |
댓글