Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同路由的驼峰保证消息顺序_Java_Spring_Web Services_Apache Camel - Fatal编程技术网

Java 不同路由的驼峰保证消息顺序

Java 不同路由的驼峰保证消息顺序,java,spring,web-services,apache-camel,Java,Spring,Web Services,Apache Camel,我使用ApacheCalme2.10.0和SpringWS组件来路由一些(20+)ws/SOAP操作。 示例代码如下所示: from("spring-ws:rootqname:{http://my/name/space}myOperation1?endpointMapping=#endpointMapping") from("spring-ws:rootqname:{http://my/name/space}myOperation2?endpointMapping=#endpointMappin

我使用ApacheCalme2.10.0和SpringWS组件来路由一些(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")
正常情况下,操作会访问数DB,并可能持续几秒钟

它工作得很好,但现在我有一个新的要求:3个操作必须同步

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

对于调用2个不同操作的1个客户端,同样有效

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

该应用程序使用WebLogic 10.3.5运行

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


你有什么更好的主意吗?

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

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


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

看看ApacheKafka;它不是一个成熟的JMS,但有一些有趣的特性,比如能够再次处理旧消息。谢谢你的提示。我去看看