[spring-projects/spring-boot]Spring WebFlux 的自定义 Tcp Netty 服务器

2024-04-10 344 views
5

Spring WebFlux 的自定义 Netty TcpServer

回答

2

@eutkin 感谢您的公关和迄今为止的努力。您能否在本地运行构建,而不是依赖 CI 并在每次试验时推送一次提交,因为这会向观看存储库的每个人触发通知。

构建项目时默认检查格式规则。

0

@snicoll 抱歉

7

实际上,第一次提交看起来已经不错了,我没有看到TcpServer从服务器工厂提取的意义。无需更改任何内容,我只需拿起并完善(如果需要)您的第一个提交。

4

@bclozel 在旧的提交中,我们将 TcpServer 注入 NettyReactiveWebServerFactory 中。 NettyReactiveWebServerFactory修改Tcp服务器主机、端口、loopResources。结果,我们得到了两个不同的 TcpServer,因为 TcpServer 是不可变的。

在新的提交中,我们首先修改TcpServer,然后将其注入NettyReactiveWebServerFactory(端口除外)

5

@snicoll @bclozel 你能给我 xml 来配置代码风格的想法吗?该插件不适合我

0

@eutkin 请在命令行上运行构建。您不应依赖本地 IDE 设置来验证格式。

8

@eutkin 那么我在这里没有得到用例。我认为这是关于将自定义应用于TcpServer实例? Spring Boot 已经提供了该NettyServerCustomizer接口 - 创建一个实现该接口的 bean 允许您在应用 Spring Boot 配置后自定义 HTTP 和 TCP 服务器配置。

还不足以NettyServerCustomizer满足您的需求吗?您能更详细地解释一下用例吗?

2

@bclozel 我们可以定制 NettyServer,是的。我们如何获得定制的 tcpServer 作为 bean 呢?如果我们想要使用其他协议(例如,RSocket over Netty Tcp Server 作为传输)并且同时想要使用 Web Flux 作为外部 api,则需要 TcpServer。您可以在不同的端口上启动两个 Tcp 服务器,一个用于 Spring WebFlux,另一个用于 RSocket,但我想统一。如果我错了那就太尴尬了:)

6

@eutkin 我们已经在 Spring Boot 中支持这些用例(请参阅RSocket 的参考文档)。

据我了解,您不能在同一端口上同时拥有 RSocket TCP 和 Reactor Netty HTTP 服务器。如果有官方支持的方法,我会很感兴趣! Reactor Netty 目前不支持同一服务器的多个连接器(请参阅reactor/reactor-netty#67)。

在 Spring Boot 中,我们支持:

  • 创建独立的 RSocket TCP 服务器
  • 在现有的 Reactor Netty HTTP 服务器上插入 RSocket WebSocket

基础设施到位后,这两个目标都可以实现:请参阅我们的代码库中的RSocketServerFactoryRSocketWebSocketNettyRouteProvider

0

我正确地理解,你不能同时使用一个TcpServer作为HttpServer和直接TcpServer?

例子:

TcpServer tcpServer;

RSocketFactory.transport(TcpClientTransport.create(tcpServer));

HttpServer.from(tcpServer);
4

同样,据我了解,这是reactor netty 引导服务器和netty 管道的一种方式(请参阅参考资料HttpServerBind)。您是否有一个示例显示同一反应器 nettyHttpServer上同一端口上的 RSocket TCP 和 HTTP 处理程序?

2

没有

5

我认为我们需要退后一步,真正了解用例以及我们的基础设施中缺少的内容。我现在就关闭这个 PR。

请随意尝试 RSocket 和 Reactor Netty,然后根据需要在此处创建问题。谢谢!

3

谢谢