【问题标题】:Apache Camel return after processing (for outside sheduler)Apache Camel 处理后返回(用于外部调度程序)
【发布时间】:2018-09-21 16:32:13
【问题描述】:

我们使用 Spring Boot 来使用 Camel Spring Boot starter 运行 Camel 路由。我们想知道如何准确地在 Camel 中完成处理?问题是,由于我们从 Camel 外部调用可执行 jar 文件,它需要知道 Camel 处理何时完成(例如在处理目录中的一堆文件之后)。如果我们启用 camel.springboot.main-run-controller=true,Camel 进程永远不会返回,外部批处理进程会无限期地等待。如果我们设置 camel.springboot.main-run-controller=false,camel 进程将立即返回而不处理文件(因为路由是在守护线程中启动的)。有更简单的解决方案吗?

【问题讨论】:

    标签: spring-boot apache-camel integration


    【解决方案1】:

    您可以将camel spring boot配置为在X时间段、X段空闲时间或处理超过X条消息后自动终止。

    您可以使用 spring application.properties 文件中的camel.springboot.XXX 选项配置这些。

    另一种方法是在路由处理完所有文件等后使用控制总线停止路由。但前者在空闲超过 30 秒等后可能更容易说。

    【讨论】:

    • 感谢克劳斯的回答。我可以在哪里引用可用的 spring boot 属性列表,以便我可以在 application.properties 文件中对其进行修改?我已经对你的答案投了赞成票。如果这可行,那对我们来说就是完美的解决方案。
    • IDEA 和潜在的其他 IDE 具有自动完成功能,因此您可以像在源代码编辑器中一样按 ctrl + 空格。如果没有,您可以在源代码中找到选项:github.com/apache/camel/blob/camel-2.21.x/components/…
    • 我试过了,但没有按预期工作。因此,当没有更多文件可供选择时,一旦文件组件(来自端点消费者)发送一条空消息。然后用一个bean来停止上下文
    • 我想在空闲超时后停止一些route。是否可以在路由级别而不是CamelContext
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多