2015-10-17 3 views
0

У нас есть ниже требования,Как выполнить ту же работу прямотоке весной XD

  1. Весной XD, у нас есть работа, предположим, имя задания как MyJob
  2. , который будет вызываться другим процессом, используя остальная служба весны xd, позволяет считать имя процесса как OutsideProcess (non-spring xd process).
  3. OutsideJob вызывает MyJob, когда когда-либо файл добавляется в местоположение (позволяет предположить FILES_LOC), на который прослушивает OutsideJob.

В этом случае допустим, что MyJob занимает 5 минут, чтобы выполнить задание.

  1. В 10:00 есть файл, скопированный в FILES_LOC, а затем OutsideProcess немедленно запустит MyJob. (приблизительно он будет завершен в 10:05)
  2. В 10:01 утра другой файл, скопированный в FILES_LOC, затем OutsideProcess запускает еще один экземпляр MyJob в 10:01 AM. Но второй экземпляр ставится в очередь и запускает выполнение, как только первый экземпляр завершит выполнение (примерно в 10:05 утра).

Если мы вызываем разные задания в то же самое время, они выполняются согласованно, но одно и то же задание несколько экземпляров не выполняется выполненным concurrenctly.

Пожалуйста, дайте мне знать, как я могу выполнять одно и то же задание с несколькими экземплярами одновременно.

Заранее спасибо.

ответ

0

Единственное, что я могу придумать, это динамическое развертывание задания и его запуск сразу. Вы можете использовать шаблон SpringXD Rest для создания определения задания на лету и запускать их после спящего через несколько секунд. И убедитесь, что вы удаляете/уничтожаете задание, когда работа завершается успешно.

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

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