我有一个 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 秒,它会抛出某种异常?
目前,如果没有立即响应,我的应用程序似乎会挂起等待请求。
最佳答案
有两种方法:
已由@soilworker 解释 - http://localhost:9080/myservice?httpClient.soTimeout=5000 .参见单元测试here .
这不是正确的方法,但可以在简单的场景中使用。
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/