Выполнение ScheduledExecutorService на нескольких серверах - PullRequest
0 голосов
/ 03 июля 2019

У меня есть ухо, которое будет развернуто на нескольких серверах в качестве внутреннего уха. В этом ухе мне нужно добавить ScheduledExecutorService для извлечения некоторых записей из базы данных в определенное время и их обработки. Но мне нужно обрабатывать это только один раз не на всех серверах, на которых будет развернуто ухо. Это достижимо, используя ScheduledExecutorService только на java8? или мне нужно использовать другую библиотеку, которая может достичь этого?

1 Ответ

0 голосов
/ 03 июля 2019

java.util.concurrent.ScheduledExecutorService - это интерфейс, определенный Java SE. В нем не указаны какие-либо требования к реализациям для обеспечения осведомленности или координации между серверами приложений. Даже интерфейс javax.enterprise.concurrent.ManagedScheduledExecutorService, который определяется Java EE, не требует каких-либо требований к осведомленности / координации планирования на разных серверах приложений, и, таким образом, реализация, которая в настоящее время обеспечивается WebSphere Application Server, в настоящее время не предоставляет такую ​​возможность. Однако в Java EE есть еще одна технология, которая предоставляет такую ​​возможность: постоянные таймеры EJB. См. связанную статью центра знаний в качестве отправной точки для традиционного WebSphere Application Server. Если вы используете WebSphere Application Server Liberty, возможности в настоящее время более ограничены и отсутствуют возможности для выполнения задачи при сбое на разных серверах, если тот, который назначен для ее запуска, выходит из строя. Для этого в настоящее время открыт запрос на улучшение в отношении свободы.

...