2017-11-02 26 views
0

나는 docs를 통해 읽고 있었고 max.poll.interval.ms 속성을 발견했지만 필요한 설정이 아닌 것 같습니다.카프카 소비자가받은 데이터를 조절하는 방법이 있습니까?

기본적으로 소비자에게 n 초마다 레코드를 폴링하도록 알리기 위해 min.poll.interval.ms과 같은 것이 필요합니다.

max.poll.records과 함께 서비스가 적정량의로드를 처리하고 있는지 확인할 수 있습니다.

답변

1

이렇게하면 작동하지 않습니다.

주기적으로 (루프로) Consumer.poll(...)을 호출하여 새로운 레코드가있는 경우이를 가져와야합니다.

동일한 스레드에서 레코드 처리 및 수신 (폴링)을 수행하는 경우 처리 시간이 오래 걸리면 소비자가 소비자 그룹에서 버려지고 다른 하나가 파티션을 확보하게됩니다.


다른 방법으로 원하지 않는 경우 kafka-streams을 사용하는 것입니다. application id이 동일한 다른 인스턴스에서 스트림 응용 프로그램을 시작하면 일종의로드 균형 조정이 제공됩니다.

+0

이 대답은 당신이 파티션 당 하나의 소비자로 괜찮다고 가정합니다. 그렇지 않은 경우에는 자체적으로 오프셋을 관리해야하며 (해당 파티션에 대해 여러 소비자간에 오프셋 데이터를 동기화해야합니다.) 이는 훨씬 더 많은 작업을 의미합니다. –