mike-neckのブログ

Java or Groovy or Swift or Golang

reactor-netty コードリーディング(1)

  1. HttpClient#create(String,int) : アドレスとポートを Consumer<HttpClientOptions.Builder> にラップして(options.host(address).port(port)) HttpClient.Builder#options(Consumer<HttpClientOptions.Builder>) で設定して HttpClient を生成する
  2. HttpClientOptions.BuilderClientOptions.Builder<B extends ClientOptions.Builder<B>> を継承したクラス
  3. HttpClientOptions.Builder に追加されているオプションは acceptGzip
  4. ClientOptions.Builder<B extends ClientOptions.Builder<B>>NettyOptionsBuilder<Bootstrap, ClientOptions, B> を継承したクラス
  5. ClientOptions.Builder にて設定可能なオプションは pool の使用有無(デフォルトは使う)/インターネットプロトコルファミリー(inet4/inet6)/ホスト/ポート/proxyのオプション
  6. ClientOptions.Builder にて Bootstrap のデフォルトオプションを設定している. 設定値は下記の表を参照.
  7. ClientProxyOption はproxy の設定(username/password/アドレス/proxyを通さないホストアドレス/proxyのタイプ)を持つ
  8. proxy のタイプによって異なる ProxyHandler を生成する(ProxyHandlerChannelDuplexHandler のサブタイプ)

ClientOptions.Builder にて設定しているデフォルト Bootstrap のオプション

オプション
ChannelOption.CONNECT_TIMEOUT_MILLIS 30000
ChannelOption.AUTO_READ false
ChannelOption.SO_RCVBUF 1024 * 1024
ChannelOption.SO_SNDBUF 1024 * 1024