如何解决有没有更好的方法在Spring reactor netty代码中配置DNS解析?
我的目标是为 Kotlin 应用程序中使用的 reactor netty HTTPClient (io.projectreactor.netty:reactor-netty-http:1.0.7) 设置特定的 DNS 解析配置,并提出以下内容:
private val nioEventLoopGroup = NioEventLoopGroup()
private val httpClient = HttpClient
.create()
.resolver(
DnsAddressResolverGroup(
DnsNameResolverBuilder(nioEventLoopGroup.next())
.channelType(NioDatagramChannel::class.java)
.nameServerProvider(
SequentialDnsServerAddressStreamProvider(
InetSocketAddress("10.0.0.53",53),InetSocketAddress("10.0.0.63",53)))))
首先,对于识别用于 DNS 解析的 DSN 服务器 IP 地址这一看似简单的任务来说,这似乎相当复杂。我想知道是否有使用定制器类或 Spring 属性的更好的配置方法。阅读中还没有发现什么东西,但是我对Spring IOC的方式缺乏经验。
其次,配置DNS解析器IP地址不应该涉及内部Spring反应器DNS解析器使用的线程策略,所以我的技术要求创建一个新的线程池,并从顶部选择第一个用于所有 DNS 解析似乎充其量都是有问题的,这就是为什么我认为我错过了应该如何正确完成 DNS 解析器 IP 地址配置的问题。
是否有更合适的方法在 reactor netty HTTPClient 中配置 DNS 解析器 IP 地址?
解决方法
查看上面标识的文档 (https://projectreactor.io/docs/netty/release/reference/index.html#_host_name_resolution_2),此配置:
配置名称 | 说明 |
---|---|
运行 | 在给定的 LoopResources 上执行与 DNS 服务器的通信。默认情况下,使用客户端级别指定的 LoopResources。 |
表示应在HttpClient上指定线程池(EventLoopGroup)供HttpClient使用的内部组件使用,例如DNS解析器。这意味着以下实现,这对我来说更有意义。如果您有其他想法,请发表评论。
private val httpClient = HttpClient
.create().runOn(NioEventLoopGroup())
.resolver(
DnsAddressResolverGroup(
DnsNameResolverBuilder()
.channelType(NioDatagramChannel::class.java)
.nameServerProvider(
SequentialDnsServerAddressStreamProvider(
InetSocketAddress("10.0.0.54",53),InetSocketAddress("10.0.0.64",53)))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。