スプリング積分を使用して、チャネル出力で並列処理を実行しています。実行する並列処理の量を制御可能にする必要があるという要件があります。そのため、並列処理を増減できる必要があります。これが私の現在の設定です:
<service-activator input-channel="computerInputChannel" ref="computer" method="compute">
<poller task-executor="computerRequestExecutor" fixed-rate="1000"></poller>
</service-activator>
<task:executor id="computerRequestExecutor" pool-size="1" queue-capacity="100" />
<channel id="computerInputChannel"><queue/></channel>
コードでは、並列処理の量を変更する場合は、setCorePoolSizeメソッドを実行します。
私の問題は、コアプールのサイズを大きくすると並列処理が増加しますが、コアプールのサイズを小さくすると、増加した並列処理が消えないことです。たとえば、コアプールサイズが最初に1に設定されている場合、タスクは一度に1つずつ実行されます。そして、それが5に設定されている場合、一度に5つ実行されるのがわかります。ただし、1にリセットすると、一度に5回実行され続けます。
並列処理を調整するにはどうすればよいですか?
コードをたどると、interruptIfIdle()がThreadPoolExecutorクラスから呼び出されていることがわかりますが、そこからは何も得られません。
私は春の統合に非常に慣れていないので、間違った角度からこれに取り組んでいる可能性があります。私が望むことを達成する方法についての助けや代替案は素晴らしいでしょう。
この投稿は、私が書いたものが不明確であるかどうかについての私の正確な質問です-残念ながら、それは決して答えられませんでした。