Обработка асинхронных вызовов с пружинной загрузкой RestTemplate - PullRequest
0 голосов
/ 01 марта 2019

В моем весеннем загрузочном проекте у меня есть асинхронный метод, аннотированный @ Async , внутри которого я создаю объект RestTemplate и вызываю другой API-интерфейс rest с ним.Теперь я также использую bean-компонент ThreadPoolTaskExecutor в своей конфигурации.Например:

@Bean
public TaskExecutor threadPoolTaskExecutor() {

    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(5);
    executor.setMaxPoolSize(5);
    executor.initialize();

    return executor;
}

И мой асинхронный метод, подобный этому:

@Async
public String asyncMethod(SomeClass object) {
    //....
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<Object> responseEntity = restTemplate.exchange(requestEntity, Object.class);
}

Теперь у меня есть пара вопросов по этому поводу.
1. Итак, TaskExecutor будет появляться 5темы не так ли?Значит ли это, что 5 потоков могут одновременно выполнять мой asyncMethod ()?
2. Если, скажем, я переместил свой объект RestTemplate за пределы моего асинхронного метода, создав его экземпляр как bean-компонент, чтобы он не создавался каждый раз, когда asyncMethodБудет ли это влиять на параллельное выполнение (если это одновременно), потому что, насколько я понимаю, бин является одноэлементным объектом, так как каждый раз, когда этот объект вызывается, возвращается один и тот же экземпляр?

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}
...