Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- statestore
- 카프카
- Elasticsearch
- kafkastreams
- Elk
- enablekafkastreams
- avo
- 한빛미디어
- spring-cloud-stream
- schema registry
- RabbitMQ
- aws
- kafka streams
- springboot
- spring-kafka
- play framework
- coursera
- reactive
- 플레이 프레임워크
- scala
- Slick
- spring-batch
- confluent
- kafkastream
- Logstash
- Kafka
- scala 2.10
- kafka interactive query
- Spring
- gradle
Archives
- Today
- Total
b
KafkaStreams 의 setStateListener 는 언제 쓸 것인가? 본문
처음에는 이 메소드의 효용성? 사용범위? 에 대해서 이해하지 못했다. 그냥 최초에 Streams Application이 기동될때, State 가 migration 되는 동안 Application 의 health 를 DOWN 정도으로 바꾸는 정도? (즉 Created -> Running)
최근에 하나 더 든생각은 isRunning 상태에서 다른 상태로 빠질 경우이다. (isRunning은 RUNNING or REBALCING 이다) 이 때에는 API로 제공되는 KeyStore를 query하면 에러가 발생 할 것이다. 그러므로
this.kafkaStreams.setStateListener((newState, oldState) -> {
if(newState.isRunning() ){
this.ready = true;
}else {
this.ready = false;// State is not RUNNING,
}
});
this.kafkaStreams.cleanUp();
this.kafkaStreams.start();
이와 같은 리스너를 등록하여, queryable 상태를 체크하는 부분이 있어야 할 것 같았고, 그렇게 구현을 했다.
그럼 언제 isRunning 에서 다른 상태로 변경이 될까?
가장 쉽게 찾을 수 있는 경우는 StreamThread가 shutdown이 될 때 PENDING_SHUTDOWN 으로 상태가 바뀐다. cleanup()을 호출하거나, 여러경우/다양한 곳에서 shutdown/close를 호출하는 경우이다.
그 외에는... DEAD 나 PENDING_SHUTDOWN 으로 변경하는 케이스를 찾지 못함 ㅠ ( 더 있을 줄 알았다!!)
Comments