java - Camel Java Routebuilder 超时

标签 java apache-camel

我有一个 Camel routebuilder,其中定义了以下路由:

from(route).routeId("route1")
                .bean(myBean)
                .setHeader(Exchange.HTTP_METHOD, constant("GET"))
                .to("log:get-data-request?level=INFO&ShowHeaders=false&ShowBody=true")
                .to(myURI)
                .to("log:get-data-response?level=INFO&ShowHeaders=false&ShowBody=true")

是否可以为此路由添加超时,以便如果来自 myURI 的回复花费的时间超过 10 秒,它会抛出某种异常?

目前,如果没有立即响应,我的应用程序似乎会挂起等待请求。

最佳答案

有两种方法:

  1. 已由@soilworker 解释 - http://localhost:9080/myservice?httpClient.soTimeout=5000 .参见单元测试here .

  2. 这不是正确的方法,但可以在简单的场景中使用。

    public static void main(String[] args) {
        JndiContext jndiContext = (new SetJndiContext()).SetJndiContext();
        CamelContext camelContext = new DefaultCamelContext(jndiContext);
        try {
             //camelContext.addRoutes(new MyRouteBuilder());
             camelContext.addRoutes(new FileDownloadRouter());
             camelContext.start();
             Thread.sleep(10000);
             camelContext.stop();
         } catch (Exception e) {
             e.printStackTrace();
         }
    }
    

基本上,当您的路由开始运行时,上下文将在 10 秒内自动关闭。同样,这不是理想的方法。选项 1 是正确的方法,但此方法也适用。

关于java - Camel Java Routebuilder 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29968961/

相关文章:

java - Apache Camel 中使用 beanref 代替 processref 的优点

java - 有没有什么方法可以从 Apache Camel 路由生成 bpmn 模式或带有模式的图片?

java - 使用 ffmpeg 从图像创建视频文件

在使用 1.6 jdk 编译的项目中运行 jdk 1.7 编译的 jarfile 时出现 java.lang.NoClassDefFoundError

java - 优化Java中的Draw方法

java - Apache Camel 文件分割器示例

spring - Camel setBody 使用 Spring 配置

java - Camel JMS 代理在等待回复消息 20000 毫秒后发生超时

java - 如何制作 Java 文件阅读器

java - Circle List,迭代直到结束或中断,记住迭代