0

我的用例是定期轮询本地目录以获取新文件列表,然后通过 1 个连接将它们上传到 FTP 服务器。Camel 路由在 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 服务器超时我的连接。我希望重用同一个连接来上传一批文件,然后在批处理中的最后一个文件完成上传时立即关闭连接。如何在骆驼中实现这一点?

4

2 回答 2

2

目前这是不可能的。您将需要编写一些代码来自己断开连接。

欢迎您登录 JIRA 以在 camel-ftp 中增强此功能:https ://issues.apache.org/activemq/browse/CAMEL 。例如,disconnectOnBatchComplete 的新选项。

于 2016-06-22T05:51:48.000 回答
0

可能有一种方法,但它并不漂亮。

您可以尝试根据 cronSchedulePolicy 包装您的路线。因此,假设您每小时启动一次路由并轮询目录并发送文件。然后你只需添加一个stop()。不确定xml dsl中的停止是否完全相同。或者,您也可以通过停止路由onExchangeComplete(new Processor(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>
于 2016-06-22T23:39:37.930 回答