Apache camel Apache Camel批量FTP上载,然后断开连接
我的用例是定期轮询本地目录以获得新文件列表,然后在1个连接中将它们上载到FTP服务器。驼峰路线在Spring XML中定义如下:Apache camel Apache Camel批量FTP上载,然后断开连接,apache-camel,camel-ftp,Apache Camel,Camel Ftp,我的用例是定期轮询本地目录以获得新文件列表,然后在1个连接中将它们上载到FTP服务器。驼峰路线在Spring XML中定义如下: <route> <from uri="file:data/inbox?noop=true&delay=1000&maxMessagesPerPoll=3" /> <to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/> </route
<route>
<from uri="file:data/inbox?noop=true&delay=1000&maxMessagesPerPoll=3" />
<to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/>
</route>
路由运行正常,除了FTP连接将保持连接,直到FTP服务器超时“我的连接”。我希望重用相同的连接来上载一批文件,然后在批中的最后一个文件完成上载后立即关闭连接。如何在Camel中实现这一点?这在目前是不可能的。您需要编写一些代码来自行断开连接
欢迎您登录JIRA以在camel ftp中增强此功能:。例如,断开连接BatchComplete的新选项。这在当前是不可能的。您需要编写一些代码来自行断开连接
欢迎您登录JIRA以在camel ftp中增强此功能:。例如,一个断开连接BatchComplete的新选项。可能有一种方法,但它并不漂亮 您可以尝试基于cronSchedulePolicy包装您的路由。因此,假设您每小时启动一次路由,轮询目录并发送文件。然后只需添加一个stop()。不确定stop在XMLDSL中是否完全相同。或者,您也可以编写
onExchangeComplete(新处理器(StopProcessor(routeId))
并在该处理器内部通过exchange.getContext.stopRoute(routeId)
停止路由。这同样取决于您的要求,允许您这样做
<route>
<from uri="file:data/inbox?noop=true&delay=1000&maxMessagesPerPoll=3" />
<to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/>
<stop/>
</route>
也许有办法,但并不漂亮 您可以尝试基于cronSchedulePolicy包装您的路由。假设您每小时启动一次路由,轮询目录并发送文件。然后您只需添加一个stop()。不确定stop在xml dsl中是否完全相同。或者,您也可以编写
onExchangeComplete(新处理器(StopProcessor(routeId))
在处理器内部,您可以通过exchange.getContext.stopRoute(routeid)
停止路由。这同样取决于您的要求,允许您这样做
<route>
<from uri="file:data/inbox?noop=true&delay=1000&maxMessagesPerPoll=3" />
<to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/>
<stop/>
</route>
谢谢你的回复。我创建了一个JIRA案例。谢谢你的回复。我创建了一个JIRA案例