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")
操作は通常、複数の DB にアクセスし、最大数秒続く可能性があります
完全に機能しますが、新しい要件があります。3 つの操作を同期する必要があります。
たとえば、client2 が operation1 を呼び出す 1 ミリ秒前に client1 が operation1 を呼び出した場合、client1 の呼び出しは client2 の呼び出しを開始する前に終了する必要があります。
2 つの異なる操作を呼び出す 1 つのクライアントに対しても同じことが有効です。
例: client1 が operation2 を呼び出す 1 ミリ秒前に operation1 を呼び出した場合、operation1 の呼び出しは operation2 の呼び出しを開始する前に終了する必要があります。クライアントは WS を非同期的に呼び出し、これは変更できません
アプリケーションは WebLogic 10.3.5 で実行されています。
コンテナー スレッドを 1 つだけに減らすとすべての操作に影響するため、これら 3 つの操作のみにカスタム キュー (JMS スタイル) を追加することを考えていました。
もっと良いアイデアはありますか?