Spring Cloudを使用してSimple Queue Service(SQS)を使用しています。 Iは、並列処理のために、以下の構成を有する:金額並列処理Simple Queue Service(SQS)
@Bean
public SimpleAsyncTaskExecutor simpleAsyncTaskExecutor() {
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
simpleAsyncTaskExecutor.setConcurrencyLimit(50);
return simpleAsyncTaskExecutor;
}
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAutoStartup(true);
factory.setTaskExecutor(simpleAsyncTaskExecutor);
factory.setWaitTimeOut(20);
factory.setMaxNumberOfMessages(10);
return factory;
}
Iは
(maxNumberOfMessagesはSQSから返された)50件のスレッド(豆SimpleAsyncTaskExecutorで構成)50件のメッセージを処理する必要はなく、並列にわずか10のメッセージを処理しています10の代わりに50のメッセージを処理するにはどうすればよいですか?
だから、50本の(並列に)糸、またはその処理合計で10件のメッセージに10件のメッセージを処理するのですか?あなたは 'SimpleMessageListenerContainerFactory.setMaxNumberOfMessages(10);を設定しました。したがって、10個のメッセージに対して50個のスレッドを並列に処理する場合は、その数を50個に増やします。 *編集* nevermind、私はドキュメントでは、その最大のメッセージを参照してください。リクエストは10です。ボトルネックに陥っている場合は、さらにスレッドをプールする必要があります。 –
文書では、要求ごとに返されるメッセージの最大数は10です。 したがって、50個のスレッドで10個のメッセージを処理しています。 10個のメッセージの処理が終了すると、新しい要求が行われます。 私はSQSキューで50個のメッセージが50個のスレッドで処理される5つの要求を作成したいと考えています。 –