0

正在尝试https://www.baeldung.com/spring-boot-rsocket第 4 节中指定的 RSocket 请求/响应。所以有一个 RSocketServer 自动配置并在端口 7000 侦听。@GetMapping当从浏览器点击相同的方法时,无法连接到注释的方法

@RestController
public class MarketDataRestController {

    private final RSocketRequester rSocketRequester;

    public MarketDataRestController(RSocketRequester rSocketRequester) {
        this.rSocketRequester = rSocketRequester;
    }

    @GetMapping(value = "/current/{stock}")
    public Publisher<MarketData> current(@PathVariable("stock") String stock) {
        return rSocketRequester
          .route("currentMarketData")
          .data(new MarketDataRequest(stock))
          .retrieveMono(MarketData.class);
    }
}

当从浏览器请求相同时,期望能够连接到带有注释current()的类,例如:http://localhost:7000/current/APPLE。不知道如何连接到相同的。MarketDataRestController@GetMapping

4

1 回答 1

1

您不能将@RequestMapping 与套接字一起使用,请@MessageMapping改用:

代替 Spring MVC 中的 @RequestMapping 或 @GetMapping 注解,我们将使用 @MessageMapping 注解:

@Controller
public class MarketDataRSocketController {
private final MarketDataRepository marketDataRepository;
public MarketDataRSocketController(MarketDataRepository marketDataRepository) {
    this.marketDataRepository = marketDataRepository;
}
@MessageMapping("currentMarketData")
public Mono<MarketData> currentMarketData(MarketDataRequest marketDataRequest) {
    return marketDataRepository.getOne(marketDataRequest.getStock());
}
于 2019-11-03T09:01:00.707 回答