Java 不同路由的驼峰保证消息顺序
我使用ApacheCalme2.10.0和SpringWS组件来路由一些(20+)ws/SOAP操作。 示例代码如下所示: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
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,但有一些有趣的特性,比如能够再次处理旧消息。谢谢你的提示。我去看看