当前位置: 首页 > 知识库问答 >
问题:

CamelMain处理大文件并停止路由并退出JVM

颜畅
2023-03-14

我需要使用以下两种情况来处理大文件:(1)从文件目录中拉取并推送到FTP(2)从一个FTP中拉取,推送到另一个FTP

我正在创建一个java maven依赖项目,它使用camel组件来处理上述文件传输用例,所以我决定使用org.apache.camel.main。主类开始我的路线,但问题是即使文件处理成功,我的程序也没有关闭。我在某个地方读到,使用“System.exit()”可以解决问题,但问题仍然存在。

我的代码-

Main camelMain = new Main();
camelMain.enableHangupSupport();
camelMain.addRouteBuilder(getRouteBuilderLocaltoFTP());
camelMain.run();

路由器制造商

public void configure() throws Exception { 
    from(<File-Path>).routeId("local-to-ftp")
    .onCompletion().process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    exchange.getContext().stop();       
                }
            })
            .toD(<FTP-Path>); 

也尝试使用控制总线。toF("controlbus:route?routeId=%s

但在这两种情况下,路由都会正常关闭,而不是关闭程序。

在这方面寻求帮助。

共有2个答案

羊舌兴文
2023-03-14

这里记录了Graceful关闭的各种方式。您可以尝试此代码来关闭特定路由

camelContext.getRouteController().stopRoute("routeId");
camelContext.removeRoute("routeId");
施德元
2023-03-14

您可以在主服务器上配置为在X段时间后或处理N条消息后关闭应用程序。您可以将两者都设置为AFAIR,例如在2分钟后关闭,在处理1条消息后关闭。

只需检查< code>camelMain上的方法。请注意,这需要Apache Camel的最新版本。

 类似资料:
  • 默认情况,Next将会把/pages下的所有文件匹配路由(如/pages/some-file.js 渲染为 site.com/some-file) 如果你的项目使用自定义路由,那么有可能不同的路由会得到相同的内容,可以优化 SEO 和用户体验。 禁止路由链接到/pages下的文件,只需设置next.config.js文件如下所示: // next.config.js module.exports

  • 问题内容: 我正在使用Python脚本处理大型CSV文件(数以10M行的GB数)。 这些文件具有不同的行长,并且无法完全加载到内存中进行分析。 每行由脚本中的一个函数分别处理。分析一个文件大约需要20分钟,并且看来磁盘访问速度不是问题,而是处理/函数调用。 代码看起来像这样(非常简单)。实际的代码使用Class结构,但这是相似的: 鉴于计算需要共享的数据结构,使用多核在Python中并行运行分析的

  • 我想检查上传文件的大小并防止文件完全加载到内存中。我使用的是通用多部分文件。上传的文件将被处理并保存在数据库中。AbstractCoupleU反射控制器类处理包含文件的传入请求: 我的app-servlet中有一个多部分解析器bean.xml(file.upload.max_size=9437184),还有一个maxUploadSizeExceededExceptionHandler bean,用

  • 8.9. 并发的退出 有时候我们需要通知goroutine停止它正在干的事情,比如一个正在执行计算的web服务,然而它的客户端已经断开了和服务端的连接。 Go语言并没有提供在一个goroutine中终止另一个goroutine的方法,由于这样会导致goroutine之间的共享变量落在未定义的状态上。在8.7节中的rocket launch程序中,我们往名字叫abort的channel里发送了一个简

  • 要部署我的应用程序,我能想到的唯一方法是使用Tomcat。因此,我复制了项目的bundle.js和index.html文件,并将其放在eclipse IDE的WebContent中。下面是index.js文件: 因此,当我使用web pack dev server时,我的路由器工作正常,但当我将文件复制到eclipse项目的web content时(这将为我设置一切,并使项目可以使用这个Url h

  • 问题内容: 快速JUnit问题。我正在运行一些单元测试,其中涉及启动GUI并进行大量工作。 我想在测试后查看结果以目视确认。但是,它到达了代码的结尾并按原样退出。如果要覆盖此设置,请在测试的最后一行放置一个断点。不过,这很尴尬。 有什么选择可以阻止它退出吗? 问题答案: 由于事实上您需要在执行测试期间进行GUI和用户交互,因此这是“功能”测试,而不是“单元”测试。 您可以在最后将结果写入文件,这样