【问题标题】:Reuse Camel FTP route重用 Camel FTP 路由
【发布时间】:2017-10-10 15:04:53
【问题描述】:

我有一个全局定义的 FTP Camel 路由。它是从另一条路线开始的:

exchange.getContext().startRoute("downloadRoute");

并在另一个线程中停止,如 here 所述:

.process(new Processor() {
    Thread stop;
    @Override
    public void process(final Exchange exchange) throws Exception {
        stop = new Thread() {
            @Override
            public void run() {
                try {
                    log.info("Stopping route");
                    exchange.getContext().stopRoute("downloadRoute");
                } catch (Exception e) {
                } finally {
                    latch.countDown();
                }
            }
        };
        stop.start();
    }
})

它工作正常。现在我想重新开始这条路线。假设我在文件夹中添加了新文件并想再次下载它们,或者重新下载下载的文件。
因此,我使用相同的命令再次启动这条路线,但它不会下载文件 - 它根本看不到它们,因为它们在路线中的某处标记为已下载。而如果我从骆驼上下文中删除这条路线,然后再次添加它并开始 - 它可以工作 - 它会再次下载文件。

所以问题是如何重用(开始-停止-开始)现有路线,使其作为新路线开始?

【问题讨论】:

标签: apache-camel camel-ftp


【解决方案1】:

我认为一般来说,这是对 Apache Camel 的误用。路由并不意味着在应用程序中一遍又一遍地启动或停止。 Camel 中的路由通常意味着定义,然后在应用程序启动时启动,然后直到应用程序停止才停止。

如果您想使用基于file consumer 的路由(文件、FTP、SFTP 等)按需重新下载文件,我认为正确的方法是从 .camel 目录(下载文件的位置)中移动文件默认放置)回到文件消费监控的目录。如果需要,您可以很容易地以编程方式执行此操作。

这应该会导致 Camel 重新下载文件。完成后,Camel 会将它们放回 .camel 目录中。如果需要,您还可以使用 move 文件组件标志(默认为 .camel)使用与 .camel 不同的目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多