当前位置: 首页 > 知识库问答 >
问题:

Rsocket服务器异常:目标“|”没有处理程序(目标不从客户端传递到服务器)

许安邦
2023-03-14

我为RSocket消息编写了一个小演示

问题是我无法访问rsocketendpoint,我从服务器收到以下异常

客户端:配置:

@Bean
RSocket rSocket() {
    return RSocketFactory.connect()
            .mimeType(MimeTypeUtils.APPLICATION_JSON_VALUE, MimeTypeUtils.APPLICATION_JSON_VALUE)
            .frameDecoder(PayloadDecoder.ZERO_COPY)
            .transport(TcpClientTransport.create(new InetSocketAddress(7500)))
            .start()
            .block();
}

@Bean
RSocketRequester requester(RSocketStrategies strategies) {
    return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MimeTypeUtils.APPLICATION_JSON, strategies);
}
private final RSocketRequester requester;

@GetMapping("/greet/{name}")
public Publisher<GreetingsResponse> greet(@PathVariable String name) {
    return requester
            .route("hello")
            .data(new GreetingsRequest(name))
            .retrieveMono(GreetingsResponse.class);
}
spring:
  rsocket:
    server:
      port: 7500
      transport: tcp
  main:
    lazy-initialization: true
@MessageMapping("hello")
Mono<GreetingsResponse> greet(GreetingsRequest request) {
    return Mono.just(new GreetingsResponse("Hello " + request.getName() + " @ " + Instant.now()));
} 

我非常肯定这与新的wrap函数rsocketrequester.wrap有关,因为它接受了一个新的参数metadatamimetype,所以我将它设置为application/json,但似乎不起作用

堆栈跟踪:

共有1个答案

白祺然
2023-03-14

你用的是哪个spring版本?我也遇到了同样的问题,我通过更改spring-boot-starter-parent 2.2.0.m3解决了这个问题。

这里是我的源代码https://github.com/han1448/spring-rsocket-example

添加。

我解决了这个问题。您需要将mimeType更改为message/x.rsocket.routing.v0。您可以从MetadataExtractor.Routing获取此mimeType。

@Bean
RSocket rSocket() {
    return RSocketFactory.connect()
            .mimeType(MetadataExtractor.ROUTING.toString(), MimeTypeUtils.APPLICATION_JSON_VALUE)
            .frameDecoder(PayloadDecoder.ZERO_COPY)
            .transport(TcpClientTransport.create(new InetSocketAddress(7500)))
            .start()
            .block();
}

@Bean
RSocketRequester requester(RSocketStrategies strategies) {
    return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MetadataExtractor.ROUTING, strategies);
}
 类似资料:
  • 有可能从客户端向服务器抛出异常吗?我们有一个从服务器到客户端的开放流: 当我尝试这样的事情时: 我在客户端的StreamObserver.on错误中获得了异常,但在服务器端没有异常。

  • 我在通过TCP连接到Spring Boot RSocket应用程序时遇到问题。使用RSocketRequest ester时的客户端工作正常,但当我尝试使用RSocketFactory客户端连接时,它总是出错。下面的代码。 这会产生以下错误: 据我所知,这个特殊的错误是由于netty消息包装(来自stackoverflow上的其他线程)造成的,但如何解决呢?服务器是Spring Boot 5 RS

  • 问题内容: 我正在使用apache http客户端来测试我的WS。我已经在球衣上写了一个WS。该WS的URL是 用URL调用这个WS我写了一个方法如下 现在,当我运行程序并将URL传递给此函数时,我在行中得到了异常 异常如下 现在,如果我使用WS网址并使用任何浏览器访问它,我都会得到预期的结果,但我想知道我的Apache HTTP客户端代码出了什么问题。 问题答案: 我从这里浏览了链接,并得到以下

  • 尝试使用Express将参数从服务器端传递到Node.js中的客户端。 但到目前为止什么都没起作用。你们要怎么做?非常感谢你的帮助:)

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 问题内容: 我有一个SOAP消息处理程序,它能够获取Web服务响应的原始XML。我需要将此XML放入Web服务客户端,以便可以在响应发送之前对响应执行一些XSL转换。我在寻找一种从SOAP处理程序获取数据的好方法方面遇到了麻烦,该SOAP处理程序捕获传入的消息,并使原始XML可用于生成的(从WSDL)Web服务客户端。有什么想法甚至可行吗? 我想出了这样的东西: 在非常简单的测试中,这似乎可行。但