2人のサブスクライバを持つpub-subチャネルを持つSpring統合アプリケーションがあります.1人はKafkaにメッセージを公開し、もう1人はメッセージをファイルに書き込みます。問題は、ファイルにメッセージを書き込むサービスアクチベータが、カフカに生産する他のサービスアクティベータの速度に追いつくことができないことです。これにより、メッセージ処理速度全体が遅くなります。これを克服するために、pub-subチャネルとファイルに書き込むservice-activatorの間に余分なレイヤーを追加しました。トランスフォーマーは、何もしませんが、メッセージを消費し、メッセージをファイルライターが消費する直接チャネルに入れます。私の場合、これはパフォーマンスが向上しましたが、これが正しい方法であるかどうか疑問に思っていましたか?以下の設定例:それは本当にあなたの設定によって<queue>
であるため、すべてのバッファリングSpring統合publish-subscribeチャネル
<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>