zoukankan      html  css  js  c++  java
  • 20191118 Spring Boot官方文档学习(4.8)

    4.8. RSocket

    RSocket参考

    RSocket是用于字节流传输的二进制协议。它通过单个连接传递的异步消息来启用对称交互模型。

    Spring框架的spring-messaging模块在客户端和服务器端都支持RSocket请求者和响应者。

    更多参考Spring Framework的文档

    4.8.1。RSocket策略自动配置

    Spring Boot自动配置一个RSocketStrategies bean,该bean提供了用于编码和解码RSocket有效负载的所有必需基础结构。默认情况下,自动配置将尝试(按顺序)配置以下内容:

    • Jackson的CBOR编解码器
    • Jackson的JSON编解码器

    spring-boot-starter-rsocket 启动器提供以上依赖。

    开发人员可以通过创建实现RSocketStrategiesCustomizer接口的bean来自定义 RSocketStrategies 组件。请注意,@Order很重要,因为它确定编解码器的顺序。

    4.8.2。RSocket服务器自动配置

    Spring Boot提供了RSocket服务器自动配置。所需的依赖项由spring-boot-starter-rsocket提供。

    Spring Boot允许从WebFlux服务器通过WebSocket公开RSocket,或支持独立的RSocket服务器。这取决于应用程序的类型及其配置。

    对于WebFlux应用(即WebApplicationType.REACTIVE类型),仅当以下属性匹配时,RSocket服务器才会插入Web服务器:

    spring.rsocket.server.mapping-path=/rsocket # a mapping path is defined
    spring.rsocket.server.transport=websocket # websocket is chosen as a transport
    #spring.rsocket.server.port= # no port is defined
    

    由于RSocket本身是使用Reactor Netty库构建的,因此只有Reactor Netty支持将RSocket插入Web服务器。

    另外,RSocket TCP或Websocket服务器也可以作为独立的嵌入式服务器启动。除了依赖性要求之外,唯一需要的配置是为该服务器定义端口:

    spring.rsocket.server.port=9898 # the only required configuration
    spring.rsocket.server.transport=tcp # you're free to configure other properties
    

    4.8.3。Spring Messaging RSocket支持

    Spring Boot将为RSocket自动配置Spring Messaging基础结构。

    这意味着Spring Boot将创建一个RSocketMessageHandler bean,该bean将处理对您的应用程序的RSocket请求。

    4.8.4。使用以下命令调用RSocket服务RSocketRequester

    一旦RSocket在服务器和客户端之间建立了通道,任何一方都可以向另一方发送或接收请求。

    作为服务器,您可以在RSocket @Controller的任何处理程序方法上注入RSocketRequester实例。作为客户端,您需要首先配置和建立RSocket连接。在这种情况下,Spring Boot会使用预期的编解码器自动配置RSocketRequester.Builder

    RSocketRequester.Builder实例是一个原型bean,这意味着每个注入点将为您提供一个新实例。这是有意为之的,因为此构建器是有状态的,您不应使用同一实例创建具有不同设置的请求者。

    以下代码显示了一个典型示例:

    @Service
    public class MyService {
    
        private final RSocketRequester rsocketRequester;
    
        public MyService(RSocketRequester.Builder rsocketRequesterBuilder) {
            this.rsocketRequester = rsocketRequesterBuilder
                    .connectTcp("example.org", 9898).block();
        }
    
        public Mono<User> someRSocketCall(String name) {
            return this.requester.route("user").data(name)
                    .retrieveMono(User.class);
        }
    
    }
    
  • 相关阅读:
    Explain用法
    轻量快速的 Python ASGI 框架 uvicorn
    conda常用命令
    ubuntu 安装并配置zsh
    ubuntu安装zsh终端
    /etc/profile、/etc/bashrc、.bash_profile、.bashrc
    python用List的内建函数list.sort进行排序
    python对象排序
    修改python接口返回给前端的格式封装
    linux设置uwsgi开机自启
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/11885380.html
Copyright © 2011-2022 走看看