Запустить задачу @Scheduled только на одном узле кластера WebLogic?

Мы запускаем веб-приложение Spring 3.0.x (.war) с ночным заданием @Scheduled в кластерной среде WebLogic 10.3.4. Однако, поскольку приложение развертывается на каждом узле (с помощью мастера развертывания в веб-консоли AdminServer), задание запускается на каждом узле каждую ночь, таким образом, выполняется несколько раз одновременно.

Как мы можем предотвратить это?

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

Пожалуйста, дайте мне знать, если есть какие-либо открытые вопросы. Я также задавал этот вопрос на форумах сообщества Spring . Спасибо большое за вашу помощь.

13
задан Community 23 May 2017 в 11:53
поделиться