我有一个由外部任务调度器执行的独立Camel应用程序。因此,它需要在执行完成后退出。为了实现这一点,我传递了命令行参数-dm 1
,以便在关闭前处理一条消息。
应用程序正用于使用目录中的文件
from(file("SomeDirectory").include("TestFile.*"))
.to(...);
我遇到的问题是,每个文件都作为唯一的消息处理,因此-dm 1
参数会导致应用程序在处理完1个文件后退出。
如何让应用程序在处理完TestFile.*
提供的完整文件列表后退出?
我有一个由外部任务调度器执行的独立Camel应用程序。因此,它需要在执行完成后退出。为了实现这一点,我传递了命令行参数-dm 1
,以便在关闭前处理一条消息。
应用程序正用于使用目录中的文件
from(file("SomeDirectory").include("TestFile.*"))
.to(...);
我遇到的问题是,每个文件都作为唯一的消息处理,因此-dm 1
参数会导致应用程序在处理完1个文件后退出。
如何让应用程序在处理完TestFile.*
提供的完整文件列表后退出?
1条答案
按热度按时间ffscu2ro1#
由于File组件是一个批处理使用者,因此可以检查名为
CamelBatchComplete
的交换属性。如果值为true
,则表示没有其他文件要处理,因此可以停止CamelContext
。这可以像camelContext.stop()
一样简单,但要了解更多选项,请参阅this question。How can I shutdown a standalone Apache Camel application in an automated way?
编辑:因为你有一个独立的应用程序,如果你使用Camel main,你可以使用
camel.main.durationMaxIdleSeconds
选项。