@GetMapping и RSocketServer с пружинным загрузчиком-стартером-rsocket - PullRequest
0 голосов
/ 03 ноября 2019

Пытался запрос / ответ RSocket, как указано в разделе 4 https://www.baeldung.com/spring-boot-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() класса MarketDataRestController, помеченному @GetMapping, при запросе того же самого из браузера, например: http://localhost:7000/current/APPLE. Не уверенкак подключиться к тому же.

1 Ответ

1 голос
/ 03 ноября 2019

Вы не можете использовать @ RequestMapping с сокетами, используйте @MessageMapping вместо:

вместо аннотаций @RequestMapping или @GetMapping, как в Spring MVC, мы будем использоватьаннотация @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());
}
...