导航菜单
首页 » 游啊游旅行网 » 正文

g7-教你如安在Spring Boot中运用RSocket

1. 概述

RSocket应用层协议支撑 Reactive Streams语义, 例如:用RSocket作为HTTP的一种替代计划。在本教程中, 咱们将看到RSocket用在spring boot中,特别是spring boot 怎么协助笼统出更低等级的RSocket API。

2. 依靠

让咱们从增加spring-boot-starter-rsocket依靠开端:

这个依靠会传递性的拉取RSocket相关的依靠,比方:rsocket-core 和 rsocket-transport-netty

3.示例的应用程序

现在持续咱们的简略应用程序。为了杰出RSocket供给的交互形式,我计划创立一个买卖应用程序, 买卖应用程序包含客户端和服务器。

3.1. 服务器设置

首要,咱们设置由springboot应用程序引导的RSocket server服务器。 由于有spring-boot-starter-rsocket dependency依靠,所以springboot会主动装备RSocket server。 跟往常相同, 能够用特点驱动的办法修正RSocg7-教你如安在Spring Boot中运用RSocketket server默许装备值。例如:经过增加如下装备在applicatiog7-教你如安在Spring Boot中运用RSocketn.properties中,来修正RSocket端口

也能够根据需要进一步修正服务器的其他特点

3.2.设置客户端

接下来,咱们来设置客户端,也是一个springboot应用程序。尽管springboot主动装备大部分RSocket相关的组件,但还要自界说一些目标来完结设置。

这儿咱们正在创立RSocket客户端而且装备TCP端口为:7000。留意: 该服务端口咱们在前面现已装备过。 接下来咱们界说了一个RSocket的装修器目标RSocketRequester。 这个目标在咱们跟RSocket server交互时会为咱们供给协助。 界说这些目标装备后,咱们还仅仅有了一个骨架。在接下来,咱们将露出不同的交互形式, 并看看springboot在这个当地供给协助的。

4. springboot RSocket 中的 Request/Response

咱们从Request/Response开端,HTTP也运用这种通讯办法,这也是工作总结范文最常见的、最相似的交互形式。 在这种交互形式里, 由客户端初始化通讯并发送一个恳求。之后,服务器端履行操作并回来一个呼应给客户端--这时通讯完结。 在咱们的买卖应用程序里, 一个客户端问询一个给定的股票的当时的商场数据。 作为回复,服务器会传递恳求的数据。

4.1.服务器

在服务器这边,咱们首要应该创立一个controller 来持有咱们的处理器办法。 咱们会运用 @MessageMapping注解来替代像SpringMVC中的@RequestMapping或许@GetMapping注解

来研讨下咱们的控制器。 咱们将运用@Controller注解来界说一个控制器来处理进入RSocket的恳求。 别的,注解@MessageMapping让咱们界说咱g7-教你如安在Spring Boot中运用RSocket们感兴趣的路由和怎么呼应一个恳求。 在这个示例中, 服务器监听路由currentMarketData, 并呼应一个单一的成果Mono给客户端。

4.2. 客户端

接下来, 咱们的RSocket客户端应该问询一只股票的价格并得到一个单一的呼应。 为了初始化恳求, 咱们该运用RSocketRequester类,如下:

留意:在示例中,RSocket客户端也是一个REST风格的controller,以此来访问咱们的RSocket服务器。因而,咱们运用@RestController和@GetMapping注解来界说咱们的恳求/呼应端点。 在端点办法中, 咱们运用的是类RSocketRequester并指定了路由。 事实上,这个是服务器端RSocket所希望的路由,然后咱们传递恳求数据。最终,当调用retrieveMono()办法时,springboot会帮咱们初始化一个恳求/呼应交互。

5. Spring Boot RSocket中的Fire And Forget形式

接下来咱们将检查 Fire And Forget交互形式。正如姓名提示的相同,客户端发送一个恳求给服务器,可是不希望服务器的回来呼应回来。 在咱们的买卖程序中, 一些客户端会作为数据资源服务,而且推送商场数据给服务器端。

5.1.服务器端

咱们来创立别的一个端点在咱们的服务器应用程序中,如下:

咱们又一次界说了一个新的@MessageMapping路由为collectMarketData。此外, Spring Boot主动转化传入的负载为一个MarketData实例。 可是,这儿最大的g7-教你如安在Spring Boot中运用RSocket不同是咱们回来一个Mono,由于客户端不需要服务器的回来。

5.2. 客户端

来看看咱们怎么初始化咱们的fire-and-forget形式的恳求。 咱们将创立别的一个REST风格的端点,如下:

这儿咱们指定路由和负载将是一个MarketData实例。 由于咱们运用send()办法来替代retrieveMono(),一切交互形式变成了fire-and-forget形式。

6.Spring Boot RSocket中的Request Stream

恳求流是一种更杂乱的交g7-教你如安在Spring Boot中运用RSocket互形式, 这个形式中客户端发送一个恳求,可是在一段时间内从服务器端获取到多个呼应。 为了模仿这种交互形式, 客户端会问询给定股票的一切商场数据。

6.1.服务器端

咱们从服务器端开端。 咱们将增加别的一个音讯映射办法,如下:

正如所见, 这个处理器办法跟其他的处理器办法十分相似。 不同的部分是咱们回来一个Flux来替代Mono。 最终咱们的RSocket服务器会回来多个呼应给客户端。

6.2.客户端

在客户端这边, 咱们该创立一个端点来初始化恳求/呼应通讯,如下:

咱们来研讨下RSocket恳求。 首要咱们界说了路由和恳求负载。 然后,咱们界说了运用retrieveFlux()调用的呼应希望。这部分决议了交互形式。 别的留意:由于咱们的客户端也是REST风格的服务器,客户端也界说了呼应前言类型MediaType.TEXT_EVENT_STREAM_VALUE。

7.反常的处理

现在让咱们看看在服务器程序中,怎么以声明式的办法处理反常。 当处理恳求/呼应式, 我能够简略的运用@MessageExceptionHandler注解,如下:

这儿咱们给反常处理办法符号注解为@Mesg7-教你如安在Spring Boot中运用RSocketsageExceptionHandler。作为成果, 这个办法将处理一切类型的反常, 由于Exception是一切其他类型的反常的超类。 咱们也能够明确地创立更多的不同类型的,不同的反常处理办法。 这当然是恳求/呼应形式,而且咱们回来的是Mono。咱们希望这儿的呼应类型跟咱们的交互形式的回来类型相匹配。

二维码