Spring 集成 Java DSL:不断创建和销毁集成流
Spring Integration Java DSL: Create and destroy the integration flows continuously
我的流是在数据库中配置的,我的程序不断地创建和销毁流。
因此可以随时更改流配置(例如 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
class 和其他一些 class,但没有找到合适的方法。
我这样做是为了只停止和销毁那些在数据库中发生变化的流。所以我不会破坏那些没有改变的流程。所以删除运行流的可能性不大。
我的流是在数据库中配置的,我的程序不断地创建和销毁流。
因此可以随时更改流配置(例如 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
class 和其他一些 class,但没有找到合适的方法。
我这样做是为了只停止和销毁那些在数据库中发生变化的流。所以我不会破坏那些没有改变的流程。所以删除运行流的可能性不大。