AsyncRestTemplateでSimpleRequestFactoryを使用すると、HTTPプロキシサーバーを簡単に構成できます。Netty4ClientHttpRequestFactoryを使用してSpring AsyncRestTemplateのプロキシを設定する方法は?
Iは、(Kotlinのサンプルコード)を行うことができ、次のいずれか
@Bean
open fun asyncRestTemplate(): AsyncRestTemplate {
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("127.0.0.1", 8008))
val requestFactory = SimpleClientHttpRequestFactory().apply {
this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt())
this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt())
this.setProxy(proxy)
this.setTaskExecutor(taskExecutor())
}
return AsyncRestTemplate(requestFactory)
}
または私は単に対応するシステムプロパティを設定することができる:-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8008
を。
しかし、SimpleClientHttpRequestFactory
からNetty4ClientHttpRequestFactory
に切り替える瞬間に、プロキシを直接設定する明白な方法はなく、このクライアントはシステムプロパティを尊重しないようです。
val requestFactory = Netty4ClientHttpRequestFactory().apply {
this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt())
this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt())
//this.setProxy(proxy) //???
}
一度Nettyクライアントを変更すると、プロキシを通過させる方法がわかりません。
Nettyクライアントを使用することに興味があったのは、私が非同期要求をしたいだけでなく、これをノンブロッキングにしたいということでした。私はここで間違った前提をしていないことを願っています。
Netty4ClientHttpRequestFactory
を使用している場合や、私が使用できるSpringでサポートされている代替のノンブロッキングクライアントを知っている場合は、どのようにプロキシサーバーを使用できますか?
ご回答ありがとうございます。私はこれらの他のクライアントに配慮します。つまり、私の興味は、クライアントが非同期だけでなく、非ブロッキングでもあるということです。私はこれで間違っているかもしれませんが、私はOkHttpとApache Http Componentsの両方が、非同期だが、残念ながらブロックしていると思います。右? –
okHTTPは、「OkHttpでは、フレーム化されたプロトコルを介してブロッキングAPIを公開しています」https://github.com/square/okhttp/wiki/Concurrency –
プロキシサポートが必要な場合は、デフォルトの ' Netty4ClientHttpRequestFactory'を使用して、非ブロックをあきらめたり、新しい実装を記述したりする必要があります。 –