java - Camel jetty 延续异常

标签 java jetty apache-camel activemq

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

警告 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 文档。

最佳答案

只要 activemq 响应花费的时间超过 jetty 路由上的 continuationTimeout,jetty 就会关闭连接并返回 503。

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

关于java - Camel jetty 延续异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22564666/

相关文章:

java.lang.NoSuchMethodError : org. mortbay.thread.Timeout.tick(J)V

java - 如何在使用 Maven、Jetty 和 Spring 进行集成测试的爆炸 war 中包含测试类?

java - 在Java中,为什么创建新对象时父类有时会在左边?

java - 无法解析 Maven 项目中的 Spring Security 类

java - Jersey WS 问题与 Jetty/Tomcat : SEVERE Warnings

java - Camel 解码休息响应异常

java - 支撑 Camel body

java - 了解 apache Camel 中的拆分行为

java - 检索 Java 中函数执行的代码

java - 计算基于 Java 的服务器的内部响应时间