2016-05-12 8 views
1

埋め込みTomcatインスタンスがリクエストを受け取り、それらをいくつかのマイクロサービス(Springブートアプリケーションも含む)に転送するAPIゲートウェイパターンを実装するSpringブートWebアプリケーションがあります。私はSpring Remoting with AMQPを使用して通信を確立しており、これらのサービスへの呼び出しの一部は完了するまでに時間がかかることがあります(最も高価なものは、例えば1〜2秒かかる)。Asynchronous Spring Remoting(AMQP)クライアント

私が正常にこれらのmicroservicesにリスナーの同時実行を設定した

、すべてがスムーズに働いているが、今私は、クライアントのデフォルトの動作が何であるかと思いまして。これらのマイクロサービスへの呼び出しは、同期または非同期で行われますか?そして、デフォルトで同期している場合、どうやって非同期にすることができますか。これにより、これらの呼び出しは、それらが作成されている「Tomcat」スレッドをブロックしません(他の要求を処理できるようになります。サービス)?

+0

実際にSpring Remotingを使用しているのであれば、それは基本的にリモート・メソッド呼び出しであり、メッセージングではないので同期的です。 Spring Remotingを使用したくない場合は、リモートメソッド呼び出しの代わりにメッセージを送信してください。 –

+0

"Spring Remotingを実際に使用している場合(...)" - それ以外のものを使用する方が良いでしょうか?何かにお勧めできますか? –

+0

あなたが今持っているものは基本的にRPCです。メッセージングをしたいのであれば、デフォルトでは非同期のメッセージングを使用してください。 RPCでは、いくつかのクラス/インタフェースを共有する必要があるため、異なるサービス間でバイナリ・クーリングが行われます。他のサービスのいずれかにサービス用のクライアント側プロキシがあります。 –

答えて

3

1.6リリースintroduces a new AsyncRabbitTemplatesendAndReceive()(およびconvertSendAndReceive())メソッドを呼び出すときは、ListenableFutureが返され、コールバックを登録して返信を受け取ることができます。

関連する問題