[英]@GetMapping and RSocketServer with spring-boot-starter-rsocket
正在尝试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);
}
}
当从浏览器请求相同时,期望能够连接到@GetMapping
MarketDataRestController
的current()
注释,例如: http://localhost:7000/current/APPLE 。 不知道如何连接到相同的。
您不能将@RequestMapping与 sockets 一起使用,请改用@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()); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.