首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpClient配置

HttpClient配置
EN

Stack Overflow用户
提问于 2022-02-01 17:30:38
回答 1查看 238关注 0票数 0

前几天,我在重构一些旧代码时,偶然发现了一个WebClient创建。(代码是用Kotlin编写的)

代码语言:javascript
复制
fun String.createClient(responseFilter: ExchangeFilterFunction = ExchangeFilterFunction.ofResponseProcessor { Mono.just(it) }): WebClient =
    WebClient
        .builder()
        .codecs {
            it.defaultCodecs().maxInMemorySize(52428800) // 50 Mb
            it.defaultCodecs().jackson2JsonEncoder(jackson2JsonEncoder())
            it.defaultCodecs().jackson2JsonDecoder(jackson2JsonDecoder())
        }
        .baseUrl(this)
        .filter(responseFilter)
        .clientConnector(
            ReactorClientHttpConnector(
                HttpClient.create()
                    .tcpConfiguration {
                        it.bootstrap { b ->

                            b.setCustomRequestLogging {
                                b
                                    .group(onClient(DEFAULT_NATIVE))
                                    .channel(EpollSocketChannel::class.java)
                            }

                            updateLogSupport(b, CustomLoggingHandler(HttpClient::class.java))
                        }
                    }
                    .apply {
                        if (this@createClient.startsWith("https://", true))
                            secure { it.sslContext(SslContextBuilder.forClient().trustManager(INSTANCE).build()) }
                    }
            )
        )
        .build()

fun <B : AbstractBootstrap<B, C>, C : Channel> AbstractBootstrap<B, C>.setCustomRequestLogging(init: HttpResources.() -> Unit) {

    if (System.getProperty("os.name").toLowerCase() == "linux" && config().group() == null)
        HttpResources.get().init()
}

由于tcpConfigurationbootstrap都被标记为废弃,所以我想我可以用

代码语言:javascript
复制
HttpClient.create().doOnRequest { _, connection -> connection.addHandlerFirst(CustomLoggingHandler(HttpClient::class.java)) }

但我不太清楚这部分是怎么回事

代码语言:javascript
复制
b.setCustomRequestLogging {
                                b
                                    .group(onClient(DEFAULT_NATIVE))
                                    .channel(EpollSocketChannel::class.java)
                            }

如何使用非推荐api来替换它呢?

EN

回答 1

Stack Overflow用户

发布于 2022-02-10 07:45:38

默认情况下,当您在Linux操作系统上运行时,反应堆Netty将为您配置Epoll传输。不需要自己配置通道类型或EventLoopGroup。对于不推荐的tcpConfiguration,请检查javadoc For HttpClient.html#tcpConfiguration,在这里您可以找到替换的完整文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70944966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档