我们的应用程序使用Spring Integration file:inbound-channel-adapter
来轮询目录,以便在文件被丢弃时进行监听。然后,Spring Integration启动Spring Batch作业,将要处理的文件的路径和名称移交给作业。
显然,即使在Spring Batch作业处理了文件之后,文件轮询器仍继续运行。因此,Spring上下文保持打开状态,应用程序不会终止。有没有办法,以编程方式或通过配置(最好),在读取一个文件后停止轮询?
由于
答案 0 :(得分:3)
您可以在this answer中使用轮询器上的FireOnceTrigger
或其他技术之一。
要以编程方式停止适配器,close()
上下文,或将adapter.stop()
(@Autowire
适配器调用为SourcePollingChannelAdapter
。或者使用<control-bus/>
并发送有效负载"adapterId.stop()"
的消息。