2016-11-29 2 views
1


여러 주제에 바인드 할 하나의 소비자 응용 프로그램 (하나의 JVM에서 실행 됨)을 구성하려고합니다.
소비자 응용 프로그램의 각 "소비"(내가 듣고 자하는 2 가지 주제가 있음) 메서드는 @StreamListener 주석으로 설정되고 특정 주제와 연결됩니다.
또한 다른 소비자 그룹의 각 소비자를 구성 할 것입니다.여러 주제에 바인드하는 스프링 클라우드 스트림 카프카 소비자

spring.cloud.stream.bindings.<consumer>.group=<group name> 

아이디어는 몇 가지 주제의 메시지를 소비하는 것입니다, 같은 우선 순위로 모든 가정을 조작하고 관련 microServices에 전달할 수 있습니다.

이러한 구성에서 소비자 응용 프로그램은 어떻게 작동합니까?
메시지가 하나씩 나옵니 까?
각 스레드를 다른 스레드에서 구현해야합니까?
이 방법이 전혀 좋은 방법입니까?

카프카 버전 0.8.2.1 (스포티 파이 이미지)
봄 - 클라우드 STRAM는
감사 Brixton.RELEASE.

+0

여러 주제에 대해서는 잘 모르겠지만 카프카 소비자는 동시에 여러 그룹에 속할 수 없습니다. –

+0

각 카프카 소비자를 다른 소비자 그룹으로 설정하고 싶습니다. 예 : topic "sync_message"는'spring.cloud.stream.bindings.sync_message.group = sync_group'으로 설정되고 주제 "update_db"는'spring.cloud.stream.bindings.update_db.group = db_group'으로 설정됩니다 –

답변

1

이러한 구성에서 소비자 애플리케이션은 어떻게 작동할까요? 메시지가 하나씩 나옵니 까? 각 스레드를 다른 스레드에 구현해야합니까?

Brixton 릴리스에서 각 @StreamListener 메서드는 별도의 스레드에서 메시지를 소비합니다. 각 바인딩에 대해 KetchkaMessageListenerContainer에서 FetchTask 스레드를 볼 수 있습니다. 따라서 메시지 소비는 각 주제에서 소비되는 메시지에 해당하는 스레드 사이에서 발생합니다.

+0

따라서 각 @Input 어노테이션에 대해 FetchTask (Kafka-fetch) 스레드가 생성됩니까? –

+0

예, 각 소비자에 대한 바인딩입니다. –

+1

신청 당 바인딩 수에 권장되는 한도가 있습니까? –

관련 문제