ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2020.05.07 오늘의 일지
    Dev/개발일지 2020. 6. 1. 02:08

    Kafka 연결 수정

     

    이전에 작성해뒀던 것을 블로그로 옮김

     

    오류 1)

    1
    2
    3
    4
    5
    6
    5월 072020 2:35:38 오후 org.apache.catalina.core.StandardWrapperValve invoke
    심각: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.IllegalStateException: This consumer has already been closed.] with root cause
    java.lang.IllegalStateException: This consumer has already been closed.
        at org.apache.kafka.clients.consumer.KafkaConsumer.acquireAndEnsureOpen(KafkaConsumer.java:2188)
        at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:912)
        at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:959)
    cs


    발단 : 외부에서 Kafka 객체를 만들어뒀을 때 문제점
    -> 두개의 method를 돌릴 때 먼저 체크하는 method에서 close를 하는 방법이었기에 에러가 날 수 밖에 없었음
    첫번째 Method에서 연결이 되는 지 확인한 후, Record Test를 하는 부분에서 Subscribe가 되지 않음(이미 Consumer가 종료되었다는 표시가 뜨면서)

    변경 방법
    -> Kafka에서 연결 테스트를 하는 경우 연결 테스트를 수행하는 Method 내부에서 KafkaConsumer 생성 및 동작 후 close를 수행토록 했음

    결론
    -> 그냥 애초에 Spring Boot를 써서 개발할 껄 하는 후회가 엄청나게 몰려옴

     

    오류 2)

    1
    2
    3
    5월 072020 3:39:32 오후 org.apache.catalina.core.StandardWrapperValve invoke
    심각: Servlet.service() for servlet [jsp] in context with path [] threw exception [org.apache.kafka.common.errors.InvalidSessionTimeoutException: The session timeout is not within the range allowed by the broker (as configured by group.min.session.timeout.ms and group.max.session.timeout.ms).] with root cause
    org.apache.kafka.common.errors.InvalidSessionTimeoutException: The session timeout is not within the range allowed by the broker (as configured by group.min.session.timeout.ms and group.max.session.timeout.ms).
    cs

    발단 : session.timeout.ms의 범위 문제

    변경

    설정 값 변경

    session.timeout.ms x를 group.min.session.timeout.ms의 기본값(6초) <= x <= group.max.session.timeout.ms의 기본값(30초)로 설정했음

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    configs.put("default.api.timeout.ms""500");
    configs.put("heartbeat.interval.ms""500");
    configs.put("session.timeout.ms""1000");
    configs.put("request.timeout.ms""5000");
    /*데이터를 체크하기 위한 경우*/
    configs.put("session.timeout.ms""6000");
    configs.put("request.timeout.ms""10000");
    /*혹시나 하는 마음에 아무 작동도 아닌데 켜졌을 경우 이렇게 설정함 */
    configs.put("connections.max.idle.ms"10000);
    cs

    'Dev > 개발일지' 카테고리의 다른 글

    2020.06.02 오늘의 일지  (0) 2020.06.02
    2020.05.08 오늘의 일지  (0) 2020.06.01
    2020.05.28 오늘의 일지  (1) 2020.05.28
    2020.05.27 오늘의 일지  (0) 2020.05.28
    2020.05.25 오늘의 일지  (0) 2020.05.25

    댓글

Designed by Tistory.