20191118 Spring Boot官方文档学习(4.8)
4.8. RSocket
RSocket是用于字节流传输的二进制协议。它通过单个连接传递的异步消息来启用对称交互模型。
Spring框架的spring-messaging模块在客户端和服务器端都支持RSocket请求者和响应者。
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);
}
}
20191118 Spring Boot官方文档学习(4.8)的更多相关文章
- 20191118 Spring Boot官方文档学习(4.9)
4.9.安全 如果Spring Security在类路径上,则默认情况下Web应用程序是采用的.Spring Boot依靠Spring Security的内容协商策略来确定使用httpBasic还是f ...
- Spring Boot 官方文档学习(一)入门及使用
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring boot官方文档学习(一)
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- 20191106 Spring Boot官方文档学习(1-2)
学习内容相关信息 最新版本:2.2.0 CURRENT GA 官网地址 官方文档地址 单页版文档地址 代码生成网址 2.入门 Spring Boot的主要目标是: 为所有Spring开发提供更快且入门 ...
- 20191127 Spring Boot官方文档学习(9.1-9.3)
9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...
- 20191110 Spring Boot官方文档学习(3)
3.使用Spring Boot 3.1.构建系统 建议选择Maven或Gradle作为构建工具 每个Spring Boot版本都提供了它所支持的依赖关系的精选列表.实际上,您不需要为构建配置中的所有这 ...
- 20191128 Spring Boot官方文档学习(9.4-9.8)
9.4.Spring MVC Spring Boot有许多启动器包含Spring MVC.请注意,一些启动器包括对Spring MVC的依赖,而不是直接包含它. 9.4.1.编写JSON REST服务 ...
- 20191128 Spring Boot官方文档学习【目录】
Spring Boot文档 入门 使用Spring Boot 3.1. 构建系统 3.2. 结构化代码 3.3. 配置类 3.4. 自动配置 3.5. Spring beans和依赖注入 3.6. 使 ...
- 20191128 Spring Boot官方文档学习(9.11-9.17)
9.11.消息传递 Spring Boot提供了许多包含消息传递的启动器.本部分回答了将消息与Spring Boot一起使用所引起的问题. 9.11.1.禁用事务JMS会话 如果您的JMS代理不支持事 ...
随机推荐
- linux中shell编辑小技巧
一.循环1到100 ..};do echo $i done 二.获取100以内的随机值 ] 三.截取字符串 demo= :} #截取3位字符echo ${demo:1} #截取1到最后的字符 希望大家 ...
- LaunchScreen 设置启动图片出现的问题
更换启动图片的时候出现了一系列的小问题,让人头疼,怀疑人生. 1.更换了图片,显示还是老的图片! -->重启手机,clean Xcode 2.设置布局的时候,请务必要这么布局,很完美! 如果你 ...
- MyEclipse使用教程:使用DevStyle增强型启动
[MyEclipse CI 2019.4.0安装包下载] DevStyle不仅仅是一组新的主题,它还包含了一个完全改进的启动体验,拥有更直观的UI,帮助开发人员快速启动IDE.DevStyle作为Ec ...
- c语言获取系统时间并格式化
// #include <time.h> int GetAndFormatSystemTime(char* timeBuff) { if (timeBuff == NULL) { retu ...
- Linux系统中的硬件问题如何排查?(4)
Linux系统中的硬件问题如何排查?(4) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- python类库32[序列化和反序列化之pickle]
一 pickle pickle模块用来实现python对象的序列化和反序列化.通常地pickle将python对象序列化为二进制流或文件. python对象与文件之间的序列化和反序列化: pi ...
- 系统命令模块subprocess
系统命令 可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.* --废弃,3.x中被移除 ...
- 如何提升scrapy爬取数据的效率
在配置文件中修改相关参数: 增加并发 默认的scrapy开启的并发线程为32个,可以适当的进行增加,再配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. ...
- 【NOIP2016提高A组模拟10.15】算循环
题目 分析 一步步删掉循环, 首先,原式是\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=i}^n\sum_{l=j}^m\sum_{p=i}^k\sum_{q=j}^l1\] 删 ...
- (C#- 多线程) 在线程中创建object,共享问题。
研究如下问题: 1. 在一个进程的主线程中创建一个Object,其他线程都可以访问这个Object,并操作Object的方法. - 多线程同步问题. 2. 在一个进程的多个线程里面,每个线程都创建同一 ...