使用响应式框架运行 Spring Boot 应用程序时打开端口

Posted

技术标签:

【中文标题】使用响应式框架运行 Spring Boot 应用程序时打开端口【英文标题】:ports getting opened when running spring boot app with reactive framework 【发布时间】:2022-01-17 04:32:00 【问题描述】:

应用程序在免费的 bsd 8.x 上运行,内部使用 netty-client 使用 spring boot webclient 库和 spring reactor 框架进行休息调用相当简单。我很确定我禁用了 Spring Boot 应用程序的服务器模式

当我在机器上运行 sockstat -l -L 时,我看到了这个输出

USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
    root     java       1074 807 udp46 *:*                   *:* 
    root     java       1074 811 udp46 *:*                   *:*

无法弄清楚为什么应用程序正在侦听此端口..!有人可以帮助我理解这一点。

【问题讨论】:

【参考方案1】:

DNS 解析使用 UDP 来解析地址。 默认情况下侦听任何本地地址,并且系统会选择一个临时端口。您可以按照下面的代码配置到一个确切的地址:

HttpClient.create()
          .resolver(spec -> spec.bindAddressSupplier(() -> new InetSocketAddress(...)));

更多信息您可以找到here 和here。

【讨论】:

以上是关于使用响应式框架运行 Spring Boot 应用程序时打开端口的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot WebFlux 2.1.7 中文翻译文档

如何在运行在 Tomcat 上的 Spring Web 应用程序中使用 Spring 的响应式 WebClient

Spring Boot (十四): 响应式编程以及 Spring Boot Webflux 快速入门

在 Angular 5 应用程序中响应 Spring Boot 时无法读取授权标头

如何在 Spring Boot 测试中获取正在运行的服务器端口?

212. Spring Boot WebFlux:响应式Spring Data之MongoDB