1

クライアントが一度接続を確立する必要があり、同じ接続で複数の呼び出しを行うことができるように、Scala Spray-client ライブラリを使用して永続的な HTTP 接続を要求しようとしています。

スプレーのドキュメントページでこれに関する情報を見つけることができません

4

1 に答える 1

1

デフォルトでは、スプレー クライアントは可能な限り接続を再利用すると思います。

デフォルトでは、60 秒間使用されていない接続はクライアントによって終了されます。

スプレーの参照設定から:

# The time after which an idle connection will be automatically closed.
# Set to `infinite` to completely disable idle timeouts.
spray.client.idle-timeout = infinite

アイドル タイムアウトを無効にすると、リモート サーバーが一定のタイムアウト後にアイドル状態の接続を強制終了するように設定されていない限り、接続は永久にアクティブのままになります (おそらくそうですが、スプレー クライアントは、次の制限に従って、常に新しい接続を取得できるようにする必要があります)。

ホスト コネクタ プールのサイズを 1 に制限して、目的の動作 (ホストごとに 1 つの接続) を得ることができます。

# The maximum number of parallel connections that an `HttpHostConnector`
# is allowed to establish to a host. Must be greater than zero.
spray.can.host-connector.max-connections = 1

これは、最初のリクエストが応答を受信する前に 2 番目のリクエストを送信すると、最初のリクエストが完了するまで 2 番目のリクエストは送信されないことを意味します。最初のリクエストが完了するのを待たずに単一の接続で複数のリクエストを送信するには、パイプラインを有効にします。

# If this setting is enabled, the `HttpHostConnector` pipelines requests
# across connections, otherwise only one single request can be "open"
# on a particular HTTP connection.
spray.can.host-connector.pipelining = off
于 2015-12-03T13:19:27.273 に答える