91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SpringBoot中創建一個RSocket服務器

發布時間:2021-05-17 14:57:03 來源:億速云 閱讀:189 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在SpringBoot中創建一個RSocket服務器,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

首先,檢查是否安裝了以下必備組件:

  • Java8或更高版本的JavaSDK(要檢查,請在終端使用Java-version)

  • 一個工作的javaide(我正在使用IntelliJ IDEA)

  • 包含克隆或提取的演示代碼示例的文件夾。

  • Linux Bash/ZSH shell(如果您是Windows用戶,請查看下面的注釋)

如果您是Windows用戶,請切換到Microsoft針對Linux的Windows子系統。

現在,將下載的項目文件夾設置為終端中的當前目錄:

cd spring-rsocket-demo

在終端中,下載JAR文件如下:

cd rsocket-server
wget -O rsc.jar https://github.com/making/rsc/releases/download/0.4.2/rsc-0.4.2.jar

稍后您將使用此客戶機與RSocket服務器進行對話,但現在,通過如下方式調用help命令來測試它是否正常工作:

java -jar rsc.jar --help

您應該會看到下面這樣的一些輸出(我已經截斷了),解釋了命令的用法和選項。

usage: rsc Uri [Options]

Non-option arguments:
[String: Uri]

Option                              Description
------                              -----------
--channel                           Shortcut of --im REQUEST_CHANNEL
-d, --data [String]                 Data. Use '-' to read data from

...

把這個終端窗口開著,你以后會需要的。

步驟2:檢查服務器代碼

在IDE中打開rsocket服務器項目并檢查代碼。如您所見,在springboot中支持RSocket服務器所需的代碼非常少。以下是一些亮點:

項目文件

在項目的pom.xml文件中,您可以看到Spring Boot RSocket服務器所需的<dependencies>。之所以使用SpringBootVersion2.2.5.RELEASE,是因為在撰寫本文時,該版本具有最適合生產的RSocket特性。該項目還依賴于lombok和springbootstartersocket庫。Lombok為Java數據類添加了構造函數、getter、setter和equals,還簡化了對日志等內容的訪問。RSocket的springbootstarter將RSocket與springboot集成在一起,并在運行時自動為您配置一些RSocket基礎設施。

應用程序屬性

在application.properties文件中,RSocket服務器的TCP端口被設置為7000,Spring Boot的延遲初始化功能被打開。

spring.rsocket.server.port=7000
spring.main.lazy-initialization=true

消息類

第一個更詳細的類叫做Message.java。這個Lombok@Data類用于對客戶機和服務器(或者“requester”和“responder”,如果您愿意的話)之間的請求和響應消息進行建模。這個類看起來像這樣…

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Message {
    private String origin;
    private String interaction;
    private long index;
    private long created = Instant.now().getEpochSecond();

    public Message(String origin, String interaction) {
        this.origin = origin;
        this.interaction = interaction;
        this.index = 0;
    }

    public Message(String origin, String interaction, long index) {
        this.origin = origin;
        this.interaction = interaction;
        this.index = index;
    }
}

使用這個類,您可以說一條消息來自何處(它的來源),它打算使用哪種消息傳遞樣式(交互),以及消息序列中的序列號(它的索引)。Lombok通過提供構造函數、getter、setter、toString和hashcode實現來簡化代碼。

控制器類

RSocket服務器控制器代碼可以在RSocketController.java文件中找到。這個類被注釋為Spring@Controller,這本質上意味著它聲明了服務端點(在本例中為RSocket endpoints)。

@Controller
public class RSocketController {

    @MessageMapping("request-response")
    Message requestResponse(Message request) {
            log.info("Received request-response request: {}", request);
            // create a single Message and return it
            return new Message(SERVER, RESPONSE);
    }
}

在類中,有一個名為requestResponse()的方法,它接受單個消息對象(請求)并返回單個消息對象(響應)。

您會注意到,這個requestResponse()方法用@MessageMapping(“request-response”)注釋修飾。此注釋聲明任何包含請求-響應的RSocket路由的元數據的消息都應該由此方法處理。稍后從客戶端發送請求消息時,您將使用此路由。

你注意到這和Spring的REST控制器有什么不同嗎?對于REST控制器,URL路徑映射(如/hello)用于將HTTP調用與其處理程序方法相關聯。

這就是代碼。我們試試看。

步驟3:啟動Spring Boot RSocket服務器

在第二個終端窗口中,保持現有終端窗口處于打開狀態,將rsocket server文件夾設置為當前目錄。然后使用以下命令構建并運行RSocket服務器:

./mvnw clean package spring-boot:run -DskipTests=true

或者,如果愿意的話,可以在javaide中使用“Build”和“Run”命令。

步驟4:使用RSocket CLI向服務器發送命令

接下來,您將使用在步驟1中下載并測試的RSocket client rsc.jar向正在運行的服務器發送一條消息。返回到原來的終端窗口,在那里有--help文本并發出以下命令:

java -jar rsc.jar --debug --request --data "{\"origin\":\"Client\",\"interaction\":\"Request\"}" --route request-response tcp://localhost:7000

您將注意到該命令聲明了一個RSocket消息路由(這是通過添加--route選項并指定路由的名稱來實現的)。在本例中,路由是請求-響應,它與RSocketController.java中請求-響應處理程序方法中聲明的@MessageMapping匹配。

當命令運行時,您將在終端窗口中看到一些調試信息,解釋在請求-響應交互期間發生的事情。它看起來像這樣:

2020-02-27 11:20:21.806 DEBUG --- [actor-tcp-nio-1] i.r.FrameLogger : sending ->
Frame => Stream ID: 1 Type: REQUEST_RESPONSE Flags: 0b100000000 Length: 69
Metadata:
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 10 72 65 71 75 65 73 74 2d 72 65 73 70 6f 6e 73 |.request-respons|
|00000010| 65                                              |e               |
+--------+-------------------------------------------------+----------------+
Data:
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 7b 22 6f 72 69 67 69 6e 22 3a 22 43 6c 69 65 6e |{"origin":"Clien|
|00000010| 74 22 2c 22 69 6e 74 65 72 61 63 74 69 6f 6e 22 |t","interaction"|
|00000020| 3a 22 52 65 71 75 65 73 74 22 7d                |:"Request"}     |
+--------+-------------------------------------------------+----------------+
2020-02-27 11:20:21.927 DEBUG --- [actor-tcp-nio-1] i.r.FrameLogger : receiving ->
Frame => Stream ID: 1 Type: NEXT_COMPLETE Flags: 0b1100000 Length: 81
Data:
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 7b 22 6f 72 69 67 69 6e 22 3a 22 53 65 72 76 65 |{"origin":"Serve|
|00000010| 72 22 2c 22 69 6e 74 65 72 61 63 74 69 6f 6e 22 |r","interaction"|
|00000020| 3a 22 52 65 73 70 6f 6e 73 65 22 2c 22 69 6e 64 |:"Response","ind|
|00000030| 65 78 22 3a 30 2c 22 63 72 65 61 74 65 64 22 3a |ex":0,"created":|
|00000040| 31 35 38 32 38 30 32 34 32 31 7d                |1582802421}     |
+--------+-------------------------------------------------+----------------+
{"origin":"Server","interaction":"Response","index":0,"created":1582802421}

您看到的調試輸出被分成三個“消息幀”。第一個消息幀被標記為Metadata。在本例中,它顯示發送到服務器的路由元數據(請求-響應)。第二幀顯示客戶機發送給服務器的數據消息(一個JSON字符串)。第三幀顯示服務器返回給客戶機的響應消息(也是一個JSON字符串)。

在最后一行,您可以看到來自服務器的JSON格式的響應被單獨打印出來,確認我們的命令消息已被服務器成功接收和確認:

{"origin":"Server","interaction":"Response","index":0,"created":1582802421}

oot創建RSocket服務器內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

上述就是小編為大家分享的怎么在SpringBoot中創建一個RSocket服務器了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漳平市| 西充县| 城市| 皋兰县| 司法| 台江县| 龙里县| 荆州市| 淄博市| 辽宁省| 平罗县| 龙口市| 奎屯市| 彭山县| 辽中县| 蓬安县| 观塘区| 乌恰县| 东海县| 洪雅县| 安龙县| 宽甸| 焉耆| 岳西县| 滨州市| 麻江县| 奉节县| 常宁市| 潮州市| 海阳市| 明溪县| 奈曼旗| 同德县| 前郭尔| 梁平县| 临海市| 北京市| 申扎县| 罗山县| 辉南县| 富平县|