Apache Camel Batch FTP上传然后断开连接

时间:2016-06-22 03:46:36

标签: apache-camel camel-ftp

我的用例是定期轮询本地目录中的新文件列表,然后通过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服务器超时连接。我希望重复使用相同的连接来上传一批文件,然后在批处理中的最后一个文件完成上传时立即关闭连接。如何在Camel中实现这一目标?

2 个答案:

答案 0 :(得分:2)

目前无法做到这一点。您需要编写一些代码来自行断开连接。

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

答案 1 :(得分:0)

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

您可以尝试根据cronSchedulePolicy包装路线。所以说你每小时开始一次路线并轮询目录并发送文件。然后你只需添加一个stop()。不确定xml dsl中的停止是否完全相同。或者,您也可以写<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <p> Using .text to initialize the textarea allows .append and clearing</p> <textarea readonly cols=50 rows=5 placeholder="First textarea : A" id="ta"></textarea> <br> <button type="button" id="AddText" onclick="AddText()">Add Text</button> <button type="button" id="ClearText" onclick="ClearText()">Clear</button> <br> <p>Using .val to initialize the textarea does not allow .append after clearing</p> <textarea readonly cols=50 rows=5 placeholder="Second textarea : B" id="tb"></textarea> <br> <button type="button" id="AddVal" onclick="AddVal()">Add Text</button> <button type="button" id="ClearVal" onclick="ClearVal()">Clear</button> <br> <p>Using .val to initialize the textarea with the extra checks doesn't append at all. <br>An alert is generated to show the append is called, but no appending occurs.</p> <textarea readonly cols=50 rows=5 placeholder="Third textarea : C" id="tc"></textarea> <br> <button type="button" id="AddVal2" onclick="AddVal2()">Add Text</button> <button type="button" id="ClearVal2" onclick="ClearVal2()">Clear</button>并在该处理器内通过onExchangeComplete(new Processor(StopProcessor(routeId))停止路线。这又取决于您的要求允许您这样做。

exchange.getContext.stopRoute(routeid)