Я написал небольшую демонстрацию сообщения RSocket
Проблема в том, что я не могу получить доступ к конечной точке Rsocket
, я получаю следующее исключение от сервера:
На стороне клиента: конфигурация:
@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:
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, но похоже, что это не работает
stackTrace:
Какую весеннюю версию вы используете? У меня была такая же проблема, и я решил ее, изменив spring-boot-starter-parent 2.2.0.M3.