Мои потоки настроены в базе данных, и моя программа непрерывно создает и уничтожает потоки.
Таким образом, конфигурации потоков (например, конфигурация 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
и некоторые другие классы, но не нашел подходящего метода.