Я пишу подпружиненный пакет для чтения файла с общего диска и загрузки данных в общую базу данных. Этот пакет будет развернут / выполнен с 2 узлов (серверов). Я хочу убедиться, что файл читается только одним сервером и загружает данные.
Я не нахожу ничего конкретного в интернете. У меня есть пара идей, чтобы справиться с этим, как указано ниже.
1. Используйте FileChannel tryLock, чтобы получить блокировку файла и переместить файл после его прочтения.
2. Вести таблицу в разделяемой БД для ведения записи, скажем «fileReadJobExcution» со статусом NULL изначально. Когда запускается пакетное приложение, оно просматривает эту таблицу, чтобы получить запись со статусом null и попытаться обновить статус как IN_PROGRESS. Поэтому любому узлу (серверу), получающему updateCount> 0, будет разрешено считывать файл из общего расположения, и после успешного выполнения этого пакета пакетный статус обновляется до NULL.
Я ищу, если что-то уже доступно в Spring Batch или JAVA для обработки многоузловой синхронизации с общим сервером.
Пожалуйста, помогите с предложениями.