2016-10-27 6 views
0

私はサーバーとして検索要求を受信するためにvert.xを使用しています。この要求は、サーバー上で処理され、さまざまな外部サービスへの複数の送信HTTP要求に処理されます。発信HTTPリクエストを抑制する

非同期動作では、Vert.xネイティブのhttpクライアントを使用してRxJavaを使用することにしました。

私が使用しているサービスは、最大1コール/秒に制限されています。

NIO HTTP発信要求を抑制する最も簡単な方法は何ですか?

  1. 単一のサーバー環境で。
  2. クラスタ化されたサーバー環境では。あなたの問題を解決するため
  3. 単一のサーバーで
+0

いくつかのコードを表示できますか? 1秒のボトルネックがあれば、なぜ完全に反応するのだろうか? –

+0

私はRxJavaを使用しています。これは、将来のAPIや約束しているAPIよりも非同期関数プログラミングのより完全な解決策のようです。 –

答えて

1

に単純なアプローチは次のようになります。

  1. プッシュキュー
  2. への要求に加えて、結果ハンドラはキューから要素をポップ定期的なハンドラを持っています毎秒要求
  3. はあなたが拡張することができ、クラスタ化方法で結果やエラー

と結果ハンドラを呼び出す実行以前の概念と、それはようなものになるだろうように、イベントバスアドレスでそれをラップ:サービスは、前の説明のように働くだろう

  • 要求し、セットアップをアドレスに返信ハンドラをメッセージを送る

    1. ハンドラを呼び出す代わりに、サービスはメッセージ返信ハンドラを使用して結果を渡します。
  • +0

    あなたの答えにPauloさんにお返事いただきます。回答のクラスタ部分に関しては、そのメッセージバスキューの消費レートを発信レートの制限値に合わせて制御する必要があります。 –

    関連する問題