Мои потоки настроены в базе данных, и моя программа постоянно создает и уничтожает потоки.
Таким образом, конфигурации потока (например, конфигурация cron) могут быть изменены в любое время.
Потоки регистрируются методом IntegrationFlowContext.register
и уничтожаются методом IntegrationFlowRegistration.destroy
.
Запуск потоков начинается с 0 секунды и может быть в любую минуту. Уничтожение и создание новых потоков начинается каждую минуту с 1 секунды.
Это хороший подход? Когда я это проверил, он работает. Но я думаю, хороший ли это способ сделать это, потому что какой-то поток может работать в то же время, когда он разрушен.
Псевдокод, например,
-at 13pm 00 minutes 00 seconds
-run the flow for the customer X
-at 13pm 00 minutes 01 seconds
-destroy all the flows (including the customer flow X)
-register all the flows (including the customer flow X)
-at 13pm 01 minutes 01 seconds
-destroy all the flows (including the customer flow X)
-register all the flows (including the customer flow X)
-at 13pm 02 minutes 01 seconds
-destroy all the flows (including the customer flow X)
-register all the flows (including the customer flow X)
...
-at 13pm 59 minutes 01 seconds
-destroy all the flows (including the customer flow X)
-register all the flows (including the customer flow X)
-at 14pm 00 minutes 00 seconds
-run the flow for the customer Y
-at 14pm 00 minutes 01 seconds
-destroy all the flows (including the customer flow Y)
-register all the flows (including the customer flow Y)
Редактировать:
Это необходимо, потому что я не хочу перезапускать сервер, если конфигурация в базе данных изменится. Я думаю, это хороший подход, или мне стоит это изменить.
Изменить 2:
Я могу упростить свой вопрос. Есть ли проблема, если какой-то поток удаляется методом IntegrationFlowRegistration.destroy
во время его работы?
Изменить 3:
Я обнаружил, что поток не может быть удален с помощью метода IntegrationFlowRegistration.destroy
, когда он запущен. Если одновременно выполняется несколько потоков, некоторые потоки не выполняются до конца.
Есть ли способ определить, работает ли какой-то поток? Я просмотрел класс IntegrationFlowRegistration
и некоторые другие классы, но не нашел подходящего метода.