骆驼码头延续例外

时间:2014-03-21 16:48:12

标签: java jetty apache-camel activemq

我正在通过activemq触发一个inout交换到一个执行慢速SQL查询的路由。 jetty servlet正在超时:

WARN org.apache.camel.component.jetty.CamelContinuationServlet - exchangeId的持续到期:ID-wsintc01-40254-1395419854072-0-3

我已经尝试了所有我可以想到的变量useContinuation和continuationTimout但我仍然得到503错误。

当查询完成后,我得到:

QueueReplyManager [x]] WARN org.apache.camel.component.jetty.CamelContinuationServlet - 无法恢复已过期的exchangeId:ID-wsintc01-40254-1395419854072-0-3

这是集成路径集中的路径:

<route>
  <from uri="jetty:http://0.0.0.0:{{jetty.port}}/fetch_schedules?continuationTimeout={{jetty.continuationTimeout}}"/>
  <setExchangePattern pattern="InOut"/>
  <to uri="activemq:scheduler:getTVA?disableTimeToLive=true&amp;requestTimeout={{scheduler.timeout}}&amp;replyTo={{me.replyQueue}}&amp;replyToType=Exclusive"/>
  <to uri="velocity:view.vm"/>
  <setHeader headerName="Content-Type">
    <constant>text/html;</constant>
  </setHeader>
</route>

调度程序中的路由只调用一个java bean,它对数据库执行多个sql查询并构建XML文档。

1 个答案:

答案 0 :(得分:0)

只要activemq响应比jetty路径上的continuationTimeout更长,jetty就会关闭连接并返回503。

我建议将activemq上的requestTimeout选项和jetty路径上的continuationTimeout设置为相同的值,或者将continuationTimeout设置为更长或无限(0)。