我正在尝试在两个 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 中接收网络请求的路由:
<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 队列?