저는 두 명의 구독자가있는 pub-sub 채널을 가진 스프링 통합 응용 프로그램을 가지고 있습니다. 하나는 Kafka에 메시지를 게시하고 다른 하나는 메시지를 파일에 씁니다. 문제는 파일에 메시지를 쓰는 서비스 활성자가 카프카에게 생산하는 다른 서비스 활성기의 속도를 따라갈 수 없다는 것입니다. 이로 인해 전체 메시지 처리 속도가 느려집니다. 이를 극복하기 위해 pub-sub 채널과 파일에 기록하는 service-activator 사이에 여분의 레이어를 추가했습니다. 트랜스포머는 아무것도하지 않지만 메시지를 소비하고 메시지를 파일 작성자가 소비하는 직접 채널에 넣습니다. 이 경우 성능이 향상되었지만 이것이 올바른 방법인지 궁금합니다. 아래의 샘플 구성 : 정말 당신의 설정에 의해 <queue>
때문에 모든버퍼링 스프링 통합 게시 - 구독 채널
<int:publish-subscribe-channel id="pschannel"/>
<int:service-activator id="kafkaSA" ref="producer" input- channel="pschannel" method="publish"/>
<int:transformer input-channel="pschannel" ref="dummytransformer" method="doNothing" output-channel="directChannel"/>
<bean id="dummytransformer" class="org.test.DummyTransformer"/>
<int:channel id="directChannel">
<int:queue capacity="200000" />
<int:channel>
<int:service-activator id="fileSA" ref="filewriter" input-channel="directChannel" method="publish" >
<int:poller max-messages-per-poll="10000" fixed-delay="100" />
</int:service-activator>