RestTemplate темы и несколько пользователей - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу вернуть контент пользователям по вызову на отдых, и я хочу отправить звонок на сервер отслеживания об этом запросе контента. Если сервер отслеживания перегружен слишком большим количеством ответов, мне все равно, не получится ли это. Я хочу, чтобы тайм-аут быстро и не задерживал основной запрос контента. Для этого я создал следующее:

@Configuration
@EnableAsync
public class AsyncConfiguration {

    @Bean (name = "taskExecutor")
    public Executor taskExecutor() {
        log.info("Creating Async Task Executor");
        final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setMaxPoolSize(2);//higher in prod
        executor.setQueueCapacity(2);//higher in prod
        executor.initialize();
        executor.setThreadNamePrefix("AyncThread-");
        return executor;
    }
}

...

@Async
public void trackSearch(TrackingRequest request) {
    try {
        restTemplate.postForLocation(activityUri, request);
    }
    catch (Exception e) {
        log.info("Exception in tracking activity: " + e.getMessage());
    }
}

Итак, после получения основного контента я звоню trackSearch выше. Мне все равно, если это не так, как я сказал. Но когда я тестирую этот код в JMeter, я не могу «превзойти» размер очереди. Я ожидал, что если слишком много пользователей попадут в одну и ту же конечную точку, очередь просто заполняется, и она перестает пытаться вызвать trackSearch и, следовательно, вызов restTemplate. Прямо сейчас ни один из вызовов не терпит неудачу.

Я, очевидно, что-то здесь неправильно понимаю, поэтому, если кто-нибудь сможет пролить свет на то, что я делаю неправильно, я был бы признателен.

...