Spring Integration Java DSL:连续创建和销毁集成流程

时间:2019-02-26 12:22:27

标签: spring-integration spring-integration-dsl

我的流程在数据库中配置,我的程序不断创建和销毁这些流程。

因此可以随时更改流配置(例如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类和其他一些类,但是找不到合适的方法。

1 个答案:

答案 0 :(得分:0)

我这样做是为了仅停止和销毁那些在数据库中更改的流。因此,我不会破坏那些没有改变的流程。因此,不太可能删除运行流。