RSocket 中提供了 4 種交互模型。開除即忘請(qǐng)求和響應(yīng)請(qǐng)求流請(qǐng)求通道(元數(shù)據(jù)推送)Spring(和 Spring Boot)提供 RSocket 集成,可以很容易地使用現(xiàn)有的消息傳遞基礎(chǔ)設(shè)施構(gòu)建 RSocket 服務(wù)器以隱藏原始 RSocket API。 @MessageMapping("hello") public Mono<Void> hello(Greeting p) { log.info("received: {} at {}", p, Instant.now()); return Mono.empty(); } @MessageMapping("greet.{name}") public Mono<String> greet(@DestinationVariable String name, @Payload Greeting p) { log.info("received: {}, {} at {}", name, p, Instant.now()); return Mono.just("Hello " + name + ", " + p.getMessage() + " at " + Instant.now()); } @MessageMapping("greet-stream") public Flux<String> greetStream(@Payload Greeting p) { log.info("received: {} at {}", p, Instant.now()); return Flux.interval(Duration.ofSeconds(1)) .map(i -> "Hello #" + i + "," + p.getMessage() + " at " + Instant.now()); }在客戶端,提供了RescoketRequester與服務(wù)器握手的功能。 @GetMapping("hello") Mono<Void> hello() { return this.requester.route("hello").data(new Greeting("Welcome to Rsocket")).send(); } @GetMapping("name/{name}") Mono<String> greet(@PathVariable String name) { return this.requester.route("greet." + name).data(new Greeting("Welcome to Rsocket")).retrieveMono(String.class); } @GetMapping(value = "stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE) Flux<String> greetStream() { return this.requester.route("greet-stream").data(new Greeting("Welcome to Rsocket")) .retrieveFlux(String.class) .doOnNext(msg -> log.info("received messages::" + msg)); }但是如何使用請(qǐng)求通道和 Spring 方式的元數(shù)據(jù)推送模型(使用消息傳遞基礎(chǔ)結(jié)構(gòu))?示例代碼在Github上。更新:添加了requestChannel示例。更新:SETUP和METADATA_PUSH可以由@ConnectMapping. Spring Security RSocket 可以保護(hù)SETUP和REQUEST。
1 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
此提交已在發(fā)行說明中提到:
<…>
RSocket支持包括通過注釋方法的響應(yīng)處理
@MessageMapping
和通過.RSocketRequester
<…>
—?Spring Framework 5.2.0.M1 現(xiàn)已可用。
渠道互動(dòng)模型
參考示例對(duì)應(yīng)的代碼部分:
@MessageMapping("echo-channel") Flux<String>?echoChannel(Flux<String>?payloads)?{ ????return?payloads.delayElements(Duration.ofMillis(10)).map(payload?->?payload?+?"?async"); }
元數(shù)據(jù)推送
目前看來,注釋不支持它@MessageMapping
。
添加回答
舉報(bào)
0/150
提交
取消