我们有一个基于rsocket-rpc的定制spring boot starter,我们使用了FragmentationDuplexConnection。在升级到Rsocket 1.1.0和rsocket-rpc 0.3.0之后,似乎FragmentationDuplexConnection不再存在于代码中。是什么取代了它?
我们之所以使用它,是因为我们在通过websocket通过负载均衡器/代理使用RSocket时遇到了问题,并且必须将MTU设置为65K。
发布于 2021-02-09 21:48:22
@Mavo使用RSocket-Java 1.1,我们修改了内部结构,并将该逻辑转移到专用的反应流运算符。这是因为在RSocket-Java1.0设计的情况下,假装可以通过分段解决的Head-Of-Line Blocking问题实际上并没有得到解决(在双工连接中,我们只有一个线程使用数据,因此在DuplexConnection级别上进行分段将阻止其他帧进行分段,直到当前分段的帧不能完全交付)。
为了解决前面提到的设计问题,我们将碎片和重组转移到了更高的级别。现在,每个响应方操作符(例如-> https://github.com/rsocket/rsocket-java/blob/master/rsocket-core/src/main/java/io/rsocket/core/RequestStreamResponderSubscriber.java#L315)以及每个请求方操作符都有一个重组逻辑,在将帧发送到双工连接之前进行分段,并独立于其他请求执行此操作,并且可以在其自己的线程(https://github.com/rsocket/rsocket-java/blob/master/rsocket-core/src/main/java/io/rsocket/core/FireAndForgetRequesterMono.java#L150)上执行此操作
https://stackoverflow.com/questions/66119704
复制相似问题