Наша система обрабатывает сообщения, отправленные из системы обмена сообщениями. Если сообщение не получено через 10 секунд, следует вызвать ошибку (таймаут неактивности).Внедрение таймаута бездействия с помощью ScheduledExecutorService
Я думал об использовании ScheduledExecutorService
(с 1 потоком). Каждый раз, когда получено сообщение, я отменить предыдущую задачу тайм-аута и представить новый:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Callable timeoutTask = new Callable() {...};
...
synchronized {
timeout.cancel();
timeout = executor.schedule(timeoutTask, 10, TimeUnit.SECONDS);
}
В нормальном случае, мы обрабатываем ~ 1000/сек. Будет ли этот подход масштабироваться?