问题标签 [reactor-netty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Spring 5.1 中的测试失败
我尝试将我的示例代码升级到 5.1 和 Spring Boot 2.1。Reactor Netty 在新版本中进行了重构,一些 API 发生了变化,我根据新版本的 Reactor Netty 更改了我的代码。
HttpServer
对于 Reactor Netty。
集成测试:
当我运行测试时,我得到了这样的异常。
更新:通过重构我的测试代码解决了这个问题。
spring-webflux - Reactive Redis (Lettuce) 总是发布到单线程
我正在使用 Spring Webflux(带有 spring-reactor-netty)2.1.0.RC1 和 Lettuce 5.1.1.RELEASE。
当我使用 Reactive Lettuce API 调用任何 Redis 操作时,执行总是切换到同一个单独的线程 (lettuce-nioEventLoop-4-1)。
这导致性能不佳,因为所有执行都在该单个线程中成为瓶颈。
我知道publishOn
每次调用 Redis 时我都可以使用它来切换到另一个线程,但这很容易出错并且仍然不是最优的。
有什么办法可以改善吗?我看到 Lettuce 提供了 ClientResources 类来自定义线程分配,但我找不到任何方法将它与 Spring webflux 集成。
此外,对于粗心的开发人员来说,当前的行为会不会很危险?也许应该稍微调整一下默认值。我想理想的情况是 Lettuce 可以重用来自 webflux 的相同事件循环。
我正在添加这个 Spring Boot 单类片段,可用于重现我所描述的内容:
如果我继续调用/test
端点,我会得到以下输出:
project-reactor - Reactor-netty TCPClient 无法接收响应
我正在尝试对缺少文档的最新 reactor-netty 版本进行一些项目前体验;我使用的是 0.8.0.M3 版本。
我用这个 tcp 服务器开发了一个简单的 spring boot 应用程序,它可以正确启动并且似乎可以工作:
如果我尝试使用客户端进行测试,交互似乎是正确的,但我无法收到任何响应:
查看窃听日志似乎客户端分别将每个 int 作为字符串发送,而服务器仅接收一个聚合字符串“0123456789”并仅发送一个响应。客户端没有收到任何东西,并且锁存器也没有减少 1 并且保持在 10(我希望至少收到一个聚合响应)。
谁能解释客户端出了什么问题以及如何由服务器分别接收每个整数?
谢谢
java - 使用 Reactor Netty 配置 Spring Boot 以监听 2 个端口
您如何使用 Reactor Netty 配置 Spring Boot 以侦听两个单独的端口(除了 Actuator 端口)并将单独@RestController
的 ' 绑定到每个端口?
这是用例:我有一个有四个 RESTful API 调用的有界上下文。两个会外露,两个不能。每一对都将以自己的方式进行保护,但我们需要额外的保护层,以使内部调用无法在外部路由。像 Kubernetes 这样的平台通过仅将流量路由到我们专门公开的端口来支持这一点。
所以我希望 Reactor Netty 监听以下端口并仅将适当的请求路由到每个端口:
8080
请求仅由ExternalRestController
类响应(默认配置或用 轻松覆盖server.port=8080
)。8081
请求仅由InternalRestController
类响应。8082
请求由 SpringBoot 的 Actuator 支持响应(易于配置management.server.port=8082
)
如果使用注释的 Spring Boot 注释模型无法做到这一点@RestController
,我会考虑使用新的RouterFunction
支持。
spring-boot - Spring Webflux Webclient设置Connection keepAlive时间
刚开始使用 Spring Webflux Webclient,只是想知道 Http Connection 的默认 KeepAlive 时间是多少?有没有办法增加keepAlive时间?在我们的 Rest Service 中,我们可能每五分钟收到一个请求,该请求需要很长时间来处理。它需要 500 秒 - 10 秒之间的时间。但是在负载测试中,如果我发送频繁的请求,处理时间小于 250 毫秒。
java - Netty worker 和 boss 线程配置性能问题
环境-Netty 4.1.16。爪哇 8
创建了一个服务器,定义了 2 个老板和 8 个工作线程和 100 个业务处理线程,
问题是我没有通过这种配置获得性能。我的服务器仅在 1 秒内处理 35 个请求。
如果我更改老板线程 = 1 和工作线程 = 1,那么也有相同的响应大小。在这种情况下也服务 35 个请求。
我担心线程是否正常工作?
问题是 1 个工作线程它服务 35 个请求,所以我配置了 8 个工作线程,所以它应该在 1 秒内服务 36 * 8 = 288 个请求。
我是netty的新手。请帮忙。提前致谢
netty - Spring:单线程消费者
一些工作人员(侦听器)必须以单线程方式一一处理消息。(是的,这是弱点,我知道。)看起来,我不知道如何正确设置它。应用程序挂在 Spring5 上,这阻止了我从 Spring4 移动。
我想强调:应用程序应该有多个单线程侦听器。一个队列一个监听器。我的意思是一些 . 一个队列没有多个侦听器。
我使用科特林。但问题在于配置甚至库错误。
我对每种监听器都使用了SINGLE ExclusiveListener Container Factory。
而SINGLE rabbit Connection Factory(CachingConnectionFactory 的实例)
我不知道是不是这样。
麻烦的是:
有时应用程序在 Spring5 上挂起。在 Spring 4 上,相同的配置运行良好。有趣的是,它在机器上使用了 KVM 虚拟化。即使使用 Spring5,Virtualbox 也能很好地工作。
jstack https://pastebin.com/MXdHcVAK
top -H -p 显示 PID 42 消耗所有 cpu
前段时间,我尝试迁移到 Spring5,但遇到了同样的麻烦。我以为是 reactor-netty lib 问题,但没有运气,他们无法重现https://github.com/reactor/reactor-netty/issues/381
我认为这两件事 - 配置和悬挂 - 是绑定的。但我无法深入。
更新
关于转储:如果我理解一切正确(我不确定),"tcp-client-loop-nio-4" #24 daemon prio=5 os_prio=0 tid=0x00007fc0de44d800 nid=0x2a runnable
则 jstack 中的条目消耗的 cpu。但我不知道该怎么办。
更新2
Spring Integration 和 Spring AMQP 的首席开发人员 - @GaryRussell - 批准此配置。所以我认为这个问题是关于netty的。
更新3
此问题已通过 netty 版本升级修复。
spring-boot - 在 Spring Boot 2 (WebFlux) 中增加 HTTP Post 的最大请求大小
我收到了HTTP 413 Payload Too Large
在请求正文中使用 38Kb JSON 数据发出 POST 请求的情况。我使用 WebFlux、Spring Boot 2.0.5 和 Netty。
谁能告诉我如何增加 WebFlux 的最大请求大小?
java - Spring Integration 流程失去了订阅者
我有 SI 流,org.springframework.web.reactive.socket.WebSocketMessage
它使用ByteBuf
. 在某些时候,我的流程中发生了异常:
之后,处理所有二进制 Web 套接字消息将失败,并出现以下异常:
谁能指出我尝试解决问题的任何方向?同样,在哪些情况下 SI EIP 组件(路由器、转换器、过滤器、服务激活器)会取消订阅频道?
作为参考,通道类型为org.springframework.integration.channel.FluxMessageChannel
编辑:
我的流程如下所示:
(我知道过滤器在这里更合适,我计划稍后重构)
@ArtemBilan 带有示例的仓库在这里:https ://github.com/ioreskovic/Spring-Integration-flow-loses-subscriber
spring-webflux - 如何为 Spring WebFlux 配置 netty 连接超时
我在 AWS 负载均衡器后面运行 spring 云网关(我理解它是在 Spring Webflux 上构建的),我收到间歇性的 502 错误。经调查,问题似乎与负载均衡器和我的节点之间的连接超时有关。从一些调查看来,底层网络服务器的默认超时时间为 10 秒。我使用以下命令确定了这一点...
虽然我可以将负载均衡器上的 idleTimeout 设置为 10 秒以下,但感觉效率非常低。如果可能的话,我想保持在 30 秒以上。相反,我想增加 netty 服务器上的连接超时。我试图在我的 application.yml 中设置 server.connection-timeout 属性...
也通过指定秒...
但是,当我运行 time 命令以查看我的连接持续多长时间时,超时并没有改变,它仍然在 10 秒处结束......
我在这里想念什么?