问题描述
我为RSocket消息编写了一个演示
I wrote a little demo for RSocket message
问题是我无法访问Rsocket
端点,我从服务器收到以下异常:
The problem is that I am unable to access the Rsocket
endpoint,I get the following exception from the server:
客户端:配置:
@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): yml:
The server side(using spring Rsocket):yml:
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,但这似乎不起作用
I am pretty sure it has something to do with the new wrap
function, RSocketRequester.wrap
as it accepts a new parameter metadataMimeType
, I set it to application/Json,but it does not seems to work
stackTrace:
推荐答案
您使用的是哪个春季版本?我有一个相同的问题,我通过更改spring-boot-starter-parent 2.2.0.M3来解决了.
Which spring version are you using?I had a same issue and I solved it by changing spring-boot-starter-parent 2.2.0.M3.
这是我的出处 https://github.com/han1448/spring-rsocket-example
已添加.
我解决了这个问题.您需要将mimeType更改为message/x.rsocket.routing.v0
.您可以从MetadataExtractor.ROUTING
获取此mimeType.
I solved this issue. You need to change mimeType to message/x.rsocket.routing.v0
.You can get this mimeType from MetadataExtractor.ROUTING
.
@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);
}
这篇关于Rsocket服务器异常:没有针对目标''的处理程序(目标未从客户端传递到服务器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!