Rsocket servidor excepción: Ningún controlador de destino '' (destino no pasa del cliente al servidor)

Roie Beck:

Escribí una pequeña demostración para el mensaje RSocket

El problema es que no estoy en condiciones de acceder al Rsocketpunto final, me sale el siguiente excepción del servidor:

El lado del cliente: configuración:

@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);
}

controlador:

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);
}

El lado del servidor (utilizando resorte Rsocket): yml:

spring:
  rsocket:
    server:
      port: 7500
      transport: tcp
  main:
    lazy-initialization: true

configuración:

@MessageMapping("hello")
Mono<GreetingsResponse> greet(GreetingsRequest request) {
    return Mono.just(new GreetingsResponse("Hello " + request.getName() + " @ " + Instant.now()));
} 

Estoy bastante seguro de que tiene algo que ver con la nueva wrapfunción, RSocketRequester.wrapya que acepta un nuevo parámetro metadataMimeType, lo fijo en application / JSON, pero no parece funcionar

StackTrace:

org.springframework.messaging.MessageDeliveryException: No manejador de destino '' en org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler.handleNoMatch (RSocketMessageHandler.java:312) en org.springframework.messaging.handler.invocation.reactive. AbstractMethodMessageHandler.getHandlerMethod (AbstractMethodMessageHandler.java:445) en org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler.handleMessage (AbstractMethodMessageHandler.java:417) a $ org.springframework.messaging.rsocket.annotation.support.MessagingRSocket.lambda handleAndReply $ 4 (MessagingRSocket.java:173) en reactor.core.publisher.MonoDefer.subscribe (MonoDefer.java:44) en reactor.core.publisher.Mono.subscribe (Mono.java:3920) en reactor.core.publisher. FluxConcatArray $ ConcatArraySubscriber.onComplete (FluxConcatArray.java:207) en reactor.core.publisher.FluxConcatArray.subscribe (FluxConcatArray.java:80) en reactor.core.publisher.MonoFromFluxOperator.subscribe (MonoFromFluxOperator.java:74) en io.rsocket.RSocketResponder.handleRequestResponse (RSocketResponder.java:386 ) en io.rsocket.RSocketResponder.handleFrame (RSocketResponder.java:298) en reactor.core.publisher.LambdaSubscriber.onNext (LambdaSubscriber.java:160) en reactor.core.publisher.MonoFlatMapMany $ FlatMapManyInner.onNext (MonoFlatMapMany.java: 238) en reactor.core.publisher.FluxGroupBy $ UnicastGroupedFlux.drainRegular (FluxGroupBy.java:554) en reactor.core.publisher.FluxGroupBy $ UnicastGroupedFlux.drain (FluxGroupBy.java:630) en reactor.core.publisher.FluxGroupBy $ UnicastGroupedFlux .subscribe (FluxGroupBy.java:696) en reactor.core.publisher.Flux.subscribe (Flux.java:8000) en reactor.core.publisher.MonoFlatMapMany $ FlatMapManyMain.onNext (MonoFlatMapMany.java:184) en reactor.core.publisher.Operators $ MonoSubscriber.complete (Operators.java:1582) en reactor.core.publisher.MonoProcessor.onNext (MonoProcessor.java:316) en io .rsocket.internal.ClientServerInputMultiplexer.lambda $ nueva $ 1 (ClientServerInputMultiplexer.java:116) en reactor.core.publisher.LambdaSubscriber.onNext (LambdaSubscriber.java:160) en reactor.core.publisher.FluxGroupBy $ GroupByMain.drainLoop (FluxGroupBy. java: 380) en reactor.core.publisher.FluxGroupBy $ GroupByMain.drain (FluxGroupBy.java:316) en reactor.core.publisher.FluxGroupBy $ GroupByMain.onNext (FluxGroupBy.java:201) en reactor.core.publisher.FluxMap $ MapSubscriber.onNext (FluxMap.java:114) en reactor.core.publisher.FluxMap $ MapSubscriber.onNext (FluxMap.java:114) en reactor.netty.channel.FluxReceive.drainReceiver (FluxReceive.java:206) en reactor.netty.channel.FluxReceive.onInboundNext (FluxReceive.java:322) en reactor.netty.channel.ChannelOperations.onInboundNext (ChannelOperations.java:342) en reactor.netty.channel.ChannelOperationsHandler.channelRead (ChannelOperationsHandler.java : 91) en io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:374) en io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:360) en io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext. java: 352) en io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead (ByteToMessageDecoder.java:328) en io.netty.handler.codec.ByteToMessageDecoder.channelRead (ByteToMessageDecoder.java:302) en io.netty.channel.AbstractChannelHandlerContext .invokeChannelRead (AbstractChannelHandlerContext.java:374) en io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:360) en io.netty.channel.AbstractChannelHandlerContext.fireChannelRead (AbstractChannelHandlerContext.java:352) en io.netty.channel.DefaultChannelPipeline $ HeadContext.channelRead (DefaultChannelPipeline.java:1421) en io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:374) en io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:360) en io.netty. channel.DefaultChannelPipeline.fireChannelRead (DefaultChannelPipeline.java:930) en io.netty.channel.nio.AbstractNioByteChannel $ NioByteUnsafe.read (AbstractNioByteChannel.java:163) en io.netty.channel.nio.NioEventLoop.processSelectedKey (NioEventLoop.java:697) en io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized (NioEventLoop.java:632) en io.netty.channel.nio.NioEventLoop.processSelectedKeys (NioEventLoop.java:549) en io.netty.channel.nio.NioEventLoop .run (NioEventLoop.java:511) en io.netty.util.concurrent.SingleThreadEventExecutor $ 5.run (SingleThreadEventExecutor.java:918) en io.netty.util.internal.ThreadExecutorMap $ 2.run (ThreadExecutorMap.java:74) a io.netty.util.concurrent.FastThreadLocalRunnable.run (FastThreadLocalRunnable.java:30) en java.base / java.lang.Thread.run (Thread.java:834)plazo (SingleThreadEventExecutor.java:918) en io.netty.util.internal.ThreadExecutorMap $ 2.run (ThreadExecutorMap.java:74) en io.netty.util.concurrent.FastThreadLocalRunnable.run (FastThreadLocalRunnable.java:30) en java. base / java.lang.Thread.run (Thread.java:834)plazo (SingleThreadEventExecutor.java:918) en io.netty.util.internal.ThreadExecutorMap $ 2.run (ThreadExecutorMap.java:74) en io.netty.util.concurrent.FastThreadLocalRunnable.run (FastThreadLocalRunnable.java:30) en java. base / java.lang.Thread.run (Thread.java:834)

Seung Hyun Han:

¿Qué versión de primavera está usando? Tenía un mismo tema y lo resolví cambiando 2.2.0.M3 resorte de arranque-motor de arranque y los padres.

Aquí está mi fuente https://github.com/han1448/spring-rsocket-example


Adicional.

He resuelto este problema. Es necesario cambiar mimeType message/x.rsocket.routing.v0. Usted puede obtener este mimeType partir 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);
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=229463&siteId=1
Recomendado
Clasificación