Apache camel Apache Camel批量FTP上载,然后断开连接

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&amp;delay=1000&amp;maxMessagesPerPoll=3" /> <to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/> </route

我的用例是定期轮询本地目录以获得新文件列表,然后在1个连接中将它们上载到FTP服务器。驼峰路线在Spring XML中定义如下:

<route>
  <from uri="file:data/inbox?noop=true&amp;delay=1000&amp;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&amp;delay=1000&amp;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&amp;delay=1000&amp;maxMessagesPerPoll=3" />
  <to uri="ftp:uid:xxxxx@host:21/data?disconnect=false"/>
<stop/>
</route>


谢谢你的回复。我创建了一个JIRA案例。谢谢你的回复。我创建了一个JIRA案例