Spring Cloud를 사용하여 SQS (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;
}
내가 50 개 스레드 (50) 메시지 (빈 SimpleAsyncTaskExecutor의 구성을) 처리해야하지만, 병렬에만 10 개의 메시지를 처리
이 (maxNumberOfMessages는 SQS에서 반환)
: 나는 병렬 처리를 위해 다음과 같은 구성을 가지고대신 10 개 대신 50 개의 메시지를 처리 할 수 있습니까?
은 그래서 (병렬) 50 실에 10 개의 메시지를 처리하거나, 전체에서의 처리 (10) 메시지이야? 'SimpleMessageListenerContainerFactory.setMaxNumberOfMessages (10);을 설정 했으므로 10 개의 메시지를 50 개의 스레드와 병렬로 처리하면 그 수를 50 개까지 늘릴 수 있습니까? * 편집 * nevermind, 나는 워드 프로세서에서 최대 메시지를 볼 수 있습니다. 요청은 10입니다. 병목 현상이 발생하면 더 많은 스레드를 풀링해야합니다. –
문서에서 요청 당 반환되는 최대 메시지 수는 10 개입니다. 그래서 50 개의 스레드에서 10 개의 메시지를 처리하고 있습니다. 10 개의 메시지 처리가 끝나면 새로운 요청이 만들어집니다. SQS 큐에서 50 개의 메시지가 50 개의 스레드로 처리되는 5 개의 요청을 만들고 싶습니다. –