问题标签 [spring-rsocket]

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.

0 投票
1 回答
442 浏览

spring-boot - RSocketRequester 不考虑 datamimeType

尝试将 Protobuf 与 RSocket 一起使用,Requester 不会考虑dataMimeType设置为application/protobufor application/vnd.google.protobuf。我收到错误No decoder

客户端应用程序

堆栈跟踪

但是,如果我明确禁用RSocketStrategiesAutoConfiguration并重新创建RSocketStrategiesbean,它就可以工作。

为什么也dataMimeType没有protobufRSocketStrategyCustomizer考虑过为什么要解码。

0 投票
1 回答
822 浏览

spring-boot - RSocket Js 客户端未获取从 Spring Boot RSocket 服务器生成的元素

Github 上提供的示例项目:https ://github.com/codependent/rsocket-rating-service

Spring Boot RSocket 服务器消息映射需要一个 requestResponse 请求,返回一个简单的 POJO:

在客户端,我有以下 JS 代码连接到 RSocket 服务器并请求一个值:

索引.html

访问http://localhost:8080/index.html后输入一些文本并推送发送。

请求到达记录正确生成 onNext 值的服务器:

但是在客户端

永远不会被调用,浏览器日志只显示:

为什么它没有从服务器获取生成的值?

0 投票
1 回答
540 浏览

spring-boot - repeatWhenEmpty 运算符在 RSocket websocket 请求的上下文中不起作用,但在 HTTP 调用中起作用

我遇到了repeatWhenEmpty操作员的奇怪行为,这对我来说没有任何意义。我在 Github 上上传了一个存储库,其中包含最少的可重现样本:https ://github.com/codependent/rsocket-rating-service 。

考虑这个提供两个端点(HTTP @GetMapping("/requestRating") - WebSocket )的控制器@MessageMapping("request-rating")。注意这个调用.repeatWhenEmpty(Repeat.onlyIf<Any> { true }.backoff(Backoff.fixed(Duration.ofSeconds(1))))generateRating()链的中间:

启动应用程序后,我可以调用http://localhost:8080/requestRating?songId=1234它并返回一个结果,按预期显示这些日志:

当我从 Websocket 调用相同的逻辑时:

  1. 使用权http://localhost:8080/index.html
  2. 填写任何字符串并推送发送

奇怪的是,这些是我看到的所有日志:

大约三分钟后,出现了:

尽管已经生成了一个如 中所示的元素Next1,但没有调用doOnXXXafter 的运算符。repeatWhenEmpty客户显然也没有得到结果。

这里发生了什么?如何repeatWhenEmpty在 RSocket websocket 的上下文中使用?

更新:

我添加了一个log()运算符来获取更多信息。

HTTP 请求:

RSocket 请求:

三分钟后:

如您所见,存在一些差异

  1. 在 RSocket 请求中有一个onContextUpdate调用。
  2. RSocket 请求 1 个元素,HTTP 无界
  3. 尽管发射了一个元素(onNext),但 RSocket 执行似乎正在重试或做某事。CPU 在做一些工作时停留在 6%,这在 HTTP 调用中没有发生,如下图所示:

在此处输入图像描述

更新 2:

我一直在调试,并在第一次取消期间发现了这种执行差异,特别是在课堂上Operators

HTTP:

语境:

在此处输入图像描述

Consumer<Object> hook = context.getOrDefault(Hooks.KEY_ON_DISCARD, null);

hook为空,所以它不执行:

RSocket:

语境:

在此处输入图像描述

在这种情况下,钩子是:

在此处输入图像描述

forEachRemaining它在块中无限循环:

0 投票
0 回答
191 浏览

reactive-programming - RSocket 数据库(Cassandra 或 Postgresql)性能研究

我正在尝试在我的组织中将 RSocket 用于微服务。由于我们需要从 Cassandra 和 Postgresql 等数据库进行通信和获取很多内容,因此我观察到性能下降。

当我运行一个返回模拟响应的示例 Rsocket 客户端和 Rsocket 服务器时,我得到了 12k TPS 的吞吐量。一旦我与 Cassandra 集成以获得相同的代码库,它是 300 TPS,而 Postgresql 是 400 TPS。如果我将 HikariCP 添加到 Postgresql,它是 700 TPS。

对于阻塞 HTTP 的相同用例,它是 800 TPS,非阻塞 HTTP 是 1900 TPS。

这项研究是在 Mac 笔记本电脑 8 核、16 GB、rsocket-java(无 Spring 或 RPC)上进行的。

我很困惑 RSocket 是否适合微服务用例。

请提供您的经验和任何可用于进一步研究的基准。

0 投票
0 回答
66 浏览

spring-security - 使用 Spring + RSocket + Websocket 添加 CORS 配置

如何添加 CORS 配置以限制一组允许的主机向通过 RSocket 公开的 websocket 发出请求?

我尝试了@CrossOrigin 注释但没有任何运气,我尝试添加以下内容但没有任何运气。我能找到的关于 RSocket 的所有示例都不包括 CORS / SSL 等,这些都是构建任何严肃应用程序所必需的。

0 投票
1 回答
1553 浏览

spring-boot - rsocket 使用 RSocket-Java 为 Spring Rsocket Server 路由元数据

如何设置路由元数据(在服务器使用 Spring Boot Rsocket 时仅使用 RSocket-Java 在有效负载中。

Flux<Payload> s = connection.flatMapMany(requester -> requester.requestStream(DefaultPayload.create("Some Message")))

服务器正在使用 @MessageMapping("/route")

0 投票
1 回答
87 浏览

java - 有没有办法在 Spring RSocket 中查看 REQUEST_N 交换

我正在使用 Spring 对 RSocket 的支持,特别是请求流模型。IE:

如果我正确理解 RSocket,Flux 响应将作为 request(n) 约定下的一系列有效负载消息传递回客户端。例如,一次有 n 条有效载荷消息。在每一系列消息之后,客户端使用 REQUEST_N 消息向服务器发送一个附加集,这为背压缓解提供了基础。

在java库的API(org.springframework.messaging.rsocket,它基于io.rsocket.RSocket)中,有没有办法在REQUEST_N消息到达时处理/访问它们,或者显式设置N的值通过策略(并查看请求者传递给服务器的值)?

原因/原因:我正在 Kafka 上实现一个 rsocket 外观,并尝试为订阅提供一个请求流机制,该机制将在消息被消费时支持自动偏移提交。对于请求流约定,我认为请求者偶尔的 REQUEST_N 交互是可以推进主题提交偏移量的理想点,因为它由请求者传输意味着响应者发送的前面的 Payload 消息已经已收到。

我见过的唯一其他选择是使用请求通道模型,以便请求者可以发送和初始订阅请求,并开始接收数据,还可以发送周期消息来专门控制同一通道上的提交偏移量。无论如何,我正在考虑提供它,但想知道是否有办法将逻辑注入到流的周期性请求(n)周期中。

0 投票
1 回答
165 浏览

spring-boot - spring-rsocket 是否支持在 @ConnectMapping 注释方法中返回 RejectedSetupException?

我按照 spring-rsocket-demo 项目完成我的代码。我在服务器端代码中添加了一些身份验证逻辑,如下所示。您可以看到我在身份验证逻辑“CLIENT.add(requester)”之后引发了异常。我在 spring-rsocket-demo 项目中执行名为“testRequestGetsResponse”的测试方法,我发现我无法收到异常。如何在 @ConnectMapping 注释方法中处理设置有效负载并在需要时返回 RejectedSetupException。

0 投票
1 回答
252 浏览

java - Java RSocket 客户端与 Spring RSocket 通道连接

我有简单的 Spring boot RSocket 服务

连接2个Spring服务很容易,但是我的客户端应用程序没有spring,我的客户端应该在RSocket java中

我很难理解如何向该特定通道发送(路由,如 Spring RsocketRequester)消息。

客户端代码应该是:

是否可以订阅 Spring 频道?

0 投票
1 回答
198 浏览

rsocket - RSocket 元数据 - 自定义对象

我正在玩 rsocket-java。

有没有办法通过元数据发送自定义对象。?

我在他们的文档中看到了这个代码示例。

我尝试了类似的东西。

但得到这个例外。

Caused by: java.lang.IllegalArgumentException: No decoder for messaging/x.something and com.demo.Something

我应该为每种对象类型创建自己的解码器吗?

请不要显示字符串示例。问题是传递自定义对象。