【发布时间】:2013-04-30 06:19:58
【问题描述】:
我正在尝试在两个 servlet 之间设置简单的 VM 队列测试,但没有成功。问题是请求总是超时,因为在预期的时间范围内没有响应,OUT 消息。
“org.apache.camel.ExchangeTimedOutException:在 30000 毫秒内未收到 OUT 消息。”
servlet 在 Tomcat 中运行,并且都在部署 Apache Camel。这两个应用程序都在定义骆驼上下文和简单的路线。基本设置应该没问题,因为像下面这样的简单路线正在工作:
<route>
<from uri="servlet:///hello?servletName=app1" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
<route>
<from uri="servlet:///hello?servletName=app2" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
首先,我不确定消息是否会到达 app2,因为即使未定义请求的路由(app2 将缺少 VM 路由),也会发生相同的超时。所以问题可能在于如何使用 VM 队列定义两个 servlet 之间的路由。
如果 servlet 之间的路由正常,那么问题应该在于缺少/不正确的回复。我知道接收端应该返回回复,因为来自网络服务器的传入请求是 inOut 类型,但我不知道如何实现。
app1中接收到web请求的路由:
<route>
<from uri="servlet:///test?servletName=app1" />
<to uri="vm:test">
</route>
和servlet app2中的另一端:
<route>
<from uri="vm:test" />
// Tested here: output with <simple>, 'To', 'inOut'... the result is always timeout
</route>
由于我是 Apache Camel 的新手,因此根本原因很可能非常简单。任何帮助将不胜感激。
问题很简单,如何在两个 servlet 应用程序之间设置 VM 队列?
【问题讨论】:
标签: apache-camel endpoint