欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何在Spring Boot中建立連接及測(cè)試

 更新時(shí)間:2024年12月19日 14:34:05   作者:Takumilovexu  
對(duì)于剛接觸MQTT的開(kāi)發(fā)者來(lái)說(shuō),了解如何在Spring Boot項(xiàng)目中集成MQTT客戶(hù)端并建立連接是邁向?qū)嶋H應(yīng)用的重要一步,今天,我將分享一個(gè)詳細(xì)的入門(mén)指南,帶你一步步在Spring Boot中建立MQTT連接,并通過(guò)JUnit進(jìn)行簡(jiǎn)單的單元測(cè)試,感興趣的朋友一起看看吧

在物聯(lián)網(wǎng)(IoT)應(yīng)用中,消息隊(duì)列遙測(cè)傳輸(MQTT)作為一種輕量級(jí)的消息協(xié)議,因其低帶寬需求和高效傳輸特點(diǎn),廣泛應(yīng)用于設(shè)備通信中。對(duì)于剛接觸MQTT的開(kāi)發(fā)者來(lái)說(shuō),了解如何在Spring Boot項(xiàng)目中集成MQTT客戶(hù)端并建立連接是邁向?qū)嶋H應(yīng)用的重要一步。今天,我將分享一個(gè)詳細(xì)的入門(mén)指南,帶你一步步在Spring Boot中建立MQTT連接,并通過(guò)JUnit進(jìn)行簡(jiǎn)單的單元測(cè)試。

項(xiàng)目配置

首先,我們需要在pom.xml中配置Spring Boot的父依賴(lài)以及必要的MQTT和測(cè)試依賴(lài)。以下是一個(gè)示例配置:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
</parent>
<dependencies>
    <!-- Spring Boot整合JUnit單元測(cè)試的起步依賴(lài) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!-- MQTT Java客戶(hù)端依賴(lài) -->
    <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.2.5</version>
    </dependency>
</dependencies>

在這個(gè)配置中,我們引入了spring-boot-starter-test用于單元測(cè)試,以及org.eclipse.paho.client.mqttv3作為MQTT客戶(hù)端庫(kù)。這些依賴(lài)為我們后續(xù)的開(kāi)發(fā)和測(cè)試提供了必要的基礎(chǔ)。

編寫(xiě)MQTT測(cè)試類(lèi)

接下來(lái),我們?cè)陧?xiàng)目中創(chuàng)建一個(gè)測(cè)試類(lèi)MqttPahoTest,用于測(cè)試MQTT連接的建立。以下是完整的代碼示例:

package com.takumilove.mqtt.test;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.junit.jupiter.api.Test;
/**
 * @author: Takumilove
 * @description: 通過(guò)JUnit測(cè)試,驗(yàn)證MQTT客戶(hù)端與服務(wù)器的連接是否成功。
 * @date: 2024/12/13
 **/
public class MqttPahoTest {
    // MQTT服務(wù)器地址
    String serverURI = "tcp://156.238.***.***:1883";
    // 客戶(hù)端ID
    String clientId = "paho_test";
    @Test
    public void createConnection() throws MqttException {
        // 創(chuàng)建MqttClient對(duì)象,使用內(nèi)存持久化
        MqttClient mqttClient = new MqttClient(serverURI, clientId, new MemoryPersistence());
        // 配置連接選項(xiàng)
        MqttConnectOptions options = new MqttConnectOptions();
        options.setUserName("admin"); // 設(shè)置用戶(hù)名
        options.setPassword("123456".toCharArray()); // 設(shè)置密碼
        options.setCleanSession(true); // 設(shè)置是否清除會(huì)話(huà)
        // 連接到MQTT服務(wù)器
        mqttClient.connect(options);
        System.out.println("連接成功");
        // 讓當(dāng)前線(xiàn)程阻塞,保持連接
        while (true) ;
    }
}

代碼解析

  • 導(dǎo)入必要的類(lèi):我們引入了MqttClient、MqttConnectOptions等類(lèi),這些都是Paho MQTT客戶(hù)端庫(kù)提供的,用于建立和管理MQTT連接。
  • 配置MQTT服務(wù)器信息
    • serverURI:指定MQTT服務(wù)器的地址和端口。
    • clientId:為客戶(hù)端生成一個(gè)唯一的ID。
  • 創(chuàng)建MQTT客戶(hù)端
    • 使用MqttClient構(gòu)造函數(shù),傳入服務(wù)器URI、客戶(hù)端ID以及持久化策略(這里使用內(nèi)存持久化MemoryPersistence)。
  • 設(shè)置連接選項(xiàng)
    • setUserNamesetPassword:設(shè)置連接MQTT服務(wù)器所需的認(rèn)證信息。
    • setCleanSession:決定是否清除會(huì)話(huà),true表示每次連接都是新的會(huì)話(huà)。
  • 建立連接
    • 調(diào)用connect方法,使用之前配置的選項(xiàng)與MQTT服務(wù)器建立連接。
    • 成功連接后,輸出“連接成功”。
  • 保持連接
    • 通過(guò)一個(gè)無(wú)限循環(huán)while (true);,保持當(dāng)前線(xiàn)程不退出,以維持MQTT連接。

驗(yàn)證連接狀態(tài)

成功運(yùn)行上述測(cè)試類(lèi)后,連接是否建立成功可以通過(guò)MQTT服務(wù)器的管理儀表盤(pán)進(jìn)行驗(yàn)證。大多數(shù)MQTT服務(wù)器,如Mosquitto、HiveMQ等,都會(huì)提供一個(gè)儀表盤(pán)界面,用于監(jiān)控當(dāng)前連接的客戶(hù)端。

在儀表盤(pán)中,你應(yīng)該能夠看到剛剛創(chuàng)建的客戶(hù)端paho_test已經(jīng)成功連接。連接狀態(tài)通常會(huì)顯示為“在線(xiàn)”或“已連接”,并且可能會(huì)顯示一些連接細(xì)節(jié),如客戶(hù)端ID、連接時(shí)間等。通過(guò)這種方式,你可以直觀地確認(rèn)MQTT客戶(hù)端與服務(wù)器之間的連接是否正常建立,為后續(xù)的消息發(fā)布和訂閱操作奠定基礎(chǔ)。

運(yùn)行測(cè)試

確保你的MQTT服務(wù)器(例如Mosquitto)已經(jīng)啟動(dòng),并且能夠接受來(lái)自客戶(hù)端的連接。然后運(yùn)行上述測(cè)試類(lèi),如果一切配置正確,你應(yīng)該會(huì)在控制臺(tái)看到“連接成功”的提示。同時(shí),在MQTT服務(wù)器的儀表盤(pán)中,可以看到客戶(hù)端paho_test的連接狀態(tài)。

總結(jié)

通過(guò)以上步驟,我們成功地在Spring Boot項(xiàng)目中集成了MQTT客戶(hù)端,并通過(guò)JUnit進(jìn)行了簡(jiǎn)單的連接測(cè)試。

到此這篇關(guān)于在Spring Boot中建立連接及測(cè)試的文章就介紹到這了,更多相關(guān)Spring Boot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring4下validation數(shù)據(jù)校驗(yàn)無(wú)效(maven)的解決

    Spring4下validation數(shù)據(jù)校驗(yàn)無(wú)效(maven)的解決

    這篇文章主要介紹了Spring4下validation數(shù)據(jù)校驗(yàn)無(wú)效(maven)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Mybatis與Jpa的區(qū)別和性能對(duì)比總結(jié)

    Mybatis與Jpa的區(qū)別和性能對(duì)比總結(jié)

    mybatis和jpa兩個(gè)持久層框架,從底層到用法都不同,但是實(shí)現(xiàn)的功能是一樣的,所以說(shuō)一直以來(lái)頗有爭(zhēng)議,所以下面這篇文章主要給大家介紹了關(guān)于Mybatis與Jpa的區(qū)別和性能對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 關(guān)于maven:pom文件的使用解析

    關(guān)于maven:pom文件的使用解析

    這篇文章主要介紹了關(guān)于maven:pom文件的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 基于Java實(shí)現(xiàn)五子棋小游戲(附源碼)

    基于Java實(shí)現(xiàn)五子棋小游戲(附源碼)

    這篇文章主要為大家介紹了如何通過(guò)Java實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java游戲開(kāi)發(fā)有一定幫助,需要的可以參考一下
    2022-11-11
  • Java之String類(lèi)型的有序Id批量生成器詳解

    Java之String類(lèi)型的有序Id批量生成器詳解

    這篇文章主要介紹了Java之String類(lèi)型的有序Id批量生成器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java中synchronized用法匯總

    Java中synchronized用法匯總

    使用 synchronized 無(wú)需手動(dòng)執(zhí)行加鎖和釋放鎖的操作,我們只需要聲明 synchronized 關(guān)鍵字就可以了,JVM 層面會(huì)幫我們自動(dòng)的進(jìn)行加鎖和釋放鎖的操作,我們今天重點(diǎn)來(lái)看一下synchronized 的幾種用法
    2022-04-04
  • SpringMVC執(zhí)行過(guò)程詳細(xì)講解

    SpringMVC執(zhí)行過(guò)程詳細(xì)講解

    MVC是一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)組件里面,在改進(jìn)和個(gè)性化定制界面及用戶(hù)交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯,MVC分層有助于管理和架構(gòu)復(fù)雜的應(yīng)用程序
    2022-08-08
  • Java注解的簡(jiǎn)單入門(mén)小案例

    Java注解的簡(jiǎn)單入門(mén)小案例

    這篇文章主要介紹了Java注解的簡(jiǎn)單入門(mén)小案例,注解是干什么的?怎么使用?注解的簡(jiǎn)單用法,需要的朋友可以參考下
    2023-04-04
  • Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)

    Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 詳解mybatis-plus實(shí)體類(lèi)中字段和數(shù)據(jù)庫(kù)中字段名不對(duì)應(yīng)解決辦法

    詳解mybatis-plus實(shí)體類(lèi)中字段和數(shù)據(jù)庫(kù)中字段名不對(duì)應(yīng)解決辦法

    這篇文章主要介紹了詳解mybatis-plus實(shí)體類(lèi)中字段和數(shù)據(jù)庫(kù)中字段名不對(duì)應(yīng)解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論