0

我使用带有 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,则 client1 的调用必须在 client2 的调用之前完成。

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

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

该应用程序使用 WebLogic 10.3.5 运行。

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

你有更好的主意吗?

4

2 回答 2

0

看起来所有的调用都先放入队列中,然后我们可以决定应该调用哪个。

于 2013-11-13T09:10:45.570 回答
0

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

您需要先将请求路由到 JMS 队列,队列本身就是事务断点,然后您按顺序使用 JMS 消息。通过使用消息模式,您可以更好地控制线程和消息消耗

于 2017-03-02T05:13:47.420 回答