Camel保证不同路由的消息顺序

时间:2013-11-06 10:06:59

标签: java spring web-services apache-camel

我使用带有spring-ws组件的Apache Camel 2.10.0来路由一些(20+)WS / SOAP操作。 示例代码如下所示:

from("spring-ws:rootqname:{http://my/name/space}myOperation1?endpointMapping=#endpointMapping")
from("spring-ws:rootqname:{http://my/name/space}myOperation2?endpointMapping=#endpointMapping")
from("spring-ws:rootqname:{http://my/name/space}myOperation3?endpointMapping=#endpointMapping")

操作通常可以访问多个数据库,并且可能持续几秒钟

它完美无缺,但现在我有了新的要求:必须同步3个操作。

例如:如果client1在client2调用operation1之前1ms调用operation1,则必须在启动client2的调用之前完成client1的调用。

同样适用于调用2个不同操作的1个客户端。

例如:如果client1在调用operation2之前1ms调用operation1,则必须在启动operation2的调用之前完成operation1的调用。客户端异步调用WS并且无法更改

应用程序正在使用WebLogic 10.3.5运行。

将容器线程减少到1只会影响所有操作,因此我考虑只为这3个操作添加一些自定义队列(JMS样式)。

你有更好的主意吗?

2 个答案:

答案 0 :(得分:0)

它首先将所有调用放入队列,然后我们可以决定应该调用哪一个。

答案 1 :(得分:0)

ActiveMQ易于设置,可以很好地与Camel配合使用。

首先需要将请求路由到JMS队列,队列本身是事务断点,然后依次使用JMS消息。通过使用消息模式

,您可以更好地控制线程和消息消耗