일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- statestore
- spring-kafka
- reactive
- scala
- kafkastreams
- coursera
- Spring
- springboot
- scala 2.10
- kafka streams
- avo
- Kafka
- 카프카
- gradle
- Elk
- Elasticsearch
- spring-batch
- kafkastream
- aws
- 플레이 프레임워크
- Logstash
- schema registry
- enablekafkastreams
- 한빛미디어
- Slick
- spring-cloud-stream
- play framework
- RabbitMQ
- kafka interactive query
- confluent
- Today
- Total
b
stream kafka app 에 rabbitmq sleuth 사용하기 본문
현재 팀은 SpringBoot application 을 좀 더 운영하기 쉽도록 하기 위해서 starter를 하나 생성해서 사용하고 있다.
cloud-netflix 셋팅과, 그 많고 많은 zuul, eureka 버그 픽스를 위한 몇몇 코드, 그리고 config server를 기반으로 한 다양한 설정들을 공통화 하기 위한 목적이다. 현재 진행 하는 프로젝트는 이 starter 를 쓰지 않고 순수하게 spring/kafka 만을 사용 하고 있다.
이 프로젝트를 위해 별도의 metrics 시스템을 구축하기 보다는 기존의 sleuth-zipkin 인프라를 활용하기 위해서 spring-cloud-sleuth-stream을 사용하려 한다.
1. gradle 설정 추가
['stream-kafka'].collect {
compile "org.springframework.cloud:spring-cloud-starter-$it"
}
compile 'org.springframework.cloud:spring-cloud-stream'
에서
compile 'org.springframework.cloud:spring-cloud-sleuth-stream'
compile 'org.springframework.cloud:spring-cloud-stream-rabbit'
compile "org.springframework.cloud:spring-cloud-starter-sleuth'
를 추가하였다.
2. 설정 추가
spring:
application:
name: pacman
rabbitmq:
addresses: 172.18.176.196:5672
username: rabbitmq
password: rabbitmq
sleuth:
sampler:
percentage: 1.0
stream:
enabled: true
zipkin:
service:
name: vine-event-pacman
* zipkin.service.name 을 추가해야만 했다. application.name 을 그대로 사용 할 줄 알았는데.. 어디선가 자동으로 해주고 있는 거였나보다.
이렇게만 설정하면 아래와 같은 에러를 볼 수 있다.
현재 우리의 zipkin은 rabbitmq 기반인데, 하필이면 이 프로젝트는 binder로 kafka를 사용하고 있었다.
당연하게 stream binder로 kafka, rabbit를 동시에 쓰고 있어서 발생한 문제였고, DefaultBinderFactory 를 확인하여 default binder 를 설정함으로서 해결 할 수 있었다.
Caused by: java.lang.IllegalStateException: A default binder has been requested, but there is more than one binder available for 'org.springframework.integration.channel.DirectChannel' : kafka,rabbit, and no default binder has been set
cloud:
stream:
default-binder: "rabbit"
'Cloud' 카테고리의 다른 글
kafka stream의 fail-over & high-availability (0) | 2018.01.30 |
---|---|
Spring Cloud Stream 의 버전 선택 (0) | 2018.01.28 |
Kafka 기반의 event driven stateful microservices (0) | 2018.01.28 |
AWS EC2에 tomcat7 & java8 설치 (0) | 2014.07.09 |
google cloud compute engine 시작하기. (0) | 2013.11.22 |