學習使用RSocket - Waldemar Panas
本文介紹如何使用帶有Spring Boot的RSocket。
什麼是RSocket?
RSocket是一種雙向訊息驅動的通訊協議。是超越標準的請求/響應模型的高階通訊流程。您可以使用單個訊息、訊息流或無響應實現響應。RSocket允許您使用以下傳輸協議進行客戶端和伺服器端的通訊:
- TCP
- WebSocket
- Argon
- HTTP/2流
如果您想了解更多資訊,可以觀看Ben Hale 在Spring I / 0 2019年的演講。
RSocket TCP伺服器
RSocket伺服器是整個專案中最簡單的部分。您需要做的就是轉到Spring Initializr並選擇Spring Boot,至少是版本2.2.0.M4。然後,選擇RSocket作為依賴項。
要使用TCP協議配置RSocket伺服器,請新增下行到application.properties。此配置將在埠7000處開啟RSocket。
spring.rsocket.server.transport=tcp spring.rsocket.server.port=7000 |
最後一步是新增一些控制器,您已準備好使用伺服器。
@Controller class ServerController { @MessageMapping("queue") fun helloQueue(incomingMessage: Message): Mono<Message> = Mono.just(Message("Hello ${incomingMessage.message}")) } data class Message(val message: String) |
RSocket TCP客戶端
客戶端應用程式非常相似。轉到Spring Initializr並用RSocket和引導它Spring Reactive Web。
要透過TCP埠7000與RSocket通訊,您需要建立一個RSocketRequester。對於TCP協議,它看起來像這樣。
@Configuration class ClientConfiguration { @Bean internal fun rSocketRequester(rSocketStrategies: RSocketStrategies): RSocketRequester = RSocketRequester.builder() .rsocketStrategies(rSocketStrategies) .connect(TcpClientTransport.create(7000)) .block()!! } |
客戶端應用程式可以是使用HTTP的標準響應式Web應用程式。要測試與已配置伺服器的通訊,請新增以下端點。
@RestController class ClientController(private val rSocketRequester: RSocketRequester) { @GetMapping("/hello/{name}") fun hello(@PathVariable("name") name: String): Mono<String> = rSocketRequester.route("queue") .data(Message(name)) .retrieveMono(Message::class.java) .map { it.message } } data class Message(val message: String) |
RSocket WebSocket伺服器
如果你想使用RScoket的WebSocket,那麼需新增依賴Spring Reactive Web,這樣Rsocket埠和Web埠一樣,不再使用配置中埠,呢需要定義RScoket的對映端點,比如這裡使用/rsocket,在application.properties配置:
spring.rsocket.server.transport=websocket spring.rsocket.server.mapping-path=/rsocket |
你之前為TCP伺服器配置的控制器就無需改變。
RSocket WebSocket客戶端
如果你的伺服器已經配置了埠8080,在application.properties改變客戶端埠:
server.port=8081
為WebSocket傳輸協議配置客戶端,類似之前TCP協議一樣:
@Configuration class ClientConfiguration { @Bean internal fun rSocketRequester(rSocketStrategies: RSocketStrategies): RSocketRequester { val uri = URI.create("ws://localhost:8080/rsocket") return RSocketRequester.builder() .rsocketStrategies(rSocketStrategies) .connect(WebsocketClientTransport.create(uri)) .block()!! } } |
之前為TCP建立的控制器不需改變。
Spring Boot使建立使用RSocket的應用程式變得簡單。我希望這些例子告訴你如何做到這一點。版本2.2.0.M4尚未準備好生產,但您可以在您的反應式應用程式中試用它。
相關文章
- Spring RSocket:基於服務註冊發現的 RSocket 負載均衡Spring負載
- github使用學習Github
- springboot-rsocketbasicauth-example:在RSocket和Spring Boot中使用身份驗證的示例Spring Boot
- zookeeper學習02 使用
- pagetable的使用學習
- 學習去使用 Ajax
- AJAX的學習使用
- liiklus:基於事件的Reactive(RSocket/gRPC)系統事件ReactRPC
- 使用RSocket進行服務通訊的反應性服務簡介 - Rafał Kowalski
- 深度學習之遷移學習介紹與使用深度學習遷移學習
- iOS 學習使用 Swift CodableiOSSwift
- Shell學習【變數使用】變數
- cmake中使用gtest學習
- 學習Grafana初級使用Grafana
- AI工具的學習使用AI
- VUEX 使用學習三 : mutationsVue
- VUEX 使用學習五 : getterVue
- 學習瞭解使用dockerDocker
- node學習—express基本使用Express
- 在SpringCloud使用RSocket替代Rabbit或Kafka作為訊息路由中繼的原始碼案例SpringGCCloudKafka路由中繼原始碼
- RSocket入門:Spring Boot伺服器 -Spring.ioSpring Boot伺服器
- 從微服務治理的角度看RSocket,. Envoy和. Istio微服務
- javascript學習筆記--元字元使用練習JavaScript筆記字元
- zookeeper學習03 使用場景
- Spark-Streaming的學習使用Spark
- docker學習4:Docker 映象使用Docker
- Retrofit 原始碼學習與使用原始碼
- 【學習筆記】Go Modules 使用筆記Go
- Pytest學習(四) - fixture的使用
- webpack 學習筆記:使用 lodashWeb筆記
- 學習指東:使用 Laravel JetstreamLaravel
- VUEX state 的使用學習二Vue
- 哪些人適合學習Linux?linux系統使用學習Linux
- VueJS中學習使用Vuex詳解VueJS
- Flutter之FutureBuilder的學習和使用FlutterRebuild
- 使用Octave來學習Machine Learning(二)Mac
- 使用wireshark學習網路協議協議
- docker學習3:Docker容器使用Docker