我正在通过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&requestTimeout={{scheduler.timeout}}&replyTo={{me.replyQueue}}&replyToType=Exclusive"/>
<to uri="velocity:view.vm"/>
<setHeader headerName="Content-Type">
<constant>text/html;</constant>
</setHeader>
</route>
调度程序中的路由只调用一个java bean,它对数据库执行多个sql查询并构建XML文档。
答案 0 :(得分:0)
只要activemq响应比jetty路径上的continuationTimeout更长,jetty就会关闭连接并返回503。
我建议将activemq上的requestTimeout选项和jetty路径上的continuationTimeout设置为相同的值,或者将continuationTimeout设置为更长或无限(0)。