最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java代碼mqtt接收發(fā)送消息方式

 更新時間:2023年09月28日 10:33:10   作者:其妙的太空人  
這篇文章主要介紹了java代碼mqtt接收發(fā)送消息方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java代碼mqtt接收發(fā)送消息

mqtt消息第一用到不是太熟悉所以寫一篇文章鞏固一下。

前提是你已經把mqtt已經安裝好,并且啟動好了。

首先我們需要兩部分代碼。

所需依賴

         <!-- mqtt -->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-stream</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
        </dependency>

連接mqtt部分的代碼塊,因為我不需要發(fā)送消息所以把發(fā)送消息給注釋掉了。

package mqttclient.util;
import lombok.extern.slf4j.Slf4j;
import mqttclient.callback.MqttMessageCallback2;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Objects;
@Component
@Slf4j
public class MqttClientUtil2 {
    private String username;
    private String password;
    @Value("tcp://127.0.0.1:1883")//這個是安裝mqtt的ip以及端口,1883是mqtt默認端口
    private String host;
    @Value("CYT")//這個隨便寫但是是唯一的。
    private String clientId;
    @Value("cyt/#")這個是mqtt發(fā)送消息的咱們要訂閱的topic,cyt/#代表以cyt/開始的所有topic都接收
    private String topic;
    @Value("${mqtt.connection.timeout}")//IOT_MQTT_Yield會block住timeout的時間去嘗試接收數(shù)據(jù),直到timeout才會退出??梢詫懺谶@里也可以寫在yml配置文件中
    private int timeOut;
    @Value("${mqtt.keep.alive.interval}")
    private int interval;
    @Autowired
    private MqttMessageCallback2 mqttMessageCallback2;
    private MqttClient mqttClient;
    private MqttConnectOptions mqttConnectOptions;
    @PostConstruct
    private void init(){
        connect(host, clientId,topic);
    }
    /**
     * 鏈接mqtt
     * @param host
     * @param clientId
     */
    private void connect(String host,String clientId,String topic){
        try{
            mqttClient = new MqttClient(host,clientId,new MemoryPersistence());
            mqttConnectOptions = getMqttConnectOptions();
            //設置回調函數(shù)
            mqttClient.setCallback(mqttMessageCallback2);
            //鏈接mqtt
            mqttClient.connect(mqttConnectOptions);
            //訂閱消息
            mqttClient.subscribe(topic,2);
        }catch (Exception e){
            log.error("mqtt服務鏈接異常!");
            e.printStackTrace();
        }
    }
    /**
     * 設置鏈接對象信息
     * setCleanSession  true 斷開鏈接即清楚會話  false 保留鏈接信息 離線還會繼續(xù)發(fā)消息
     * @return
     */
    private MqttConnectOptions getMqttConnectOptions(){
        MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
        /*mqttConnectOptions.setUserName(username);
        mqttConnectOptions.setPassword(password.toCharArray());*/
        mqttConnectOptions.setServerURIs(new String[]{host});
        mqttConnectOptions.setKeepAliveInterval(interval);
        mqttConnectOptions.setConnectionTimeout(timeOut);
        mqttConnectOptions.setCleanSession(true);
        return mqttConnectOptions;
    }
    /**
     *mqtt鏈接狀態(tài)
     * @return
     */
    private boolean isConnect(){
        if(Objects.isNull(this.mqttClient)){
            return false;
        }
        return mqttClient.isConnected();
    }
    /**
     * 設置重連
     * @throws Exception
     */
    private void reConnect() throws Exception{
        if(Objects.nonNull(this.mqttClient)){
            log.info("mqtt 服務已重新鏈接...");
            this.mqttClient.connect(this.mqttConnectOptions);
        }
    }
    /**
     * 斷開鏈接
     * @throws Exception
     */
    private void closeConnect() throws Exception{
        if(Objects.nonNull(this.mqttClient)){
            log.info("mqtt 服務已斷開鏈接...");
            this.mqttClient.disconnect();
        }
    }
/*    *//**
     * 發(fā)布消息
     * @param topic
     * @param message
     * @param qos
     * @throws Exception
     *//*
    public void sendMessage(String topic,String message,int qos) throws Exception {
        if(Objects.nonNull(this.mqttClient) && this.mqttClient.isConnected()){
            MqttMessage mqttMessage = new MqttMessage();
            mqttMessage.setPayload(message.getBytes());
            mqttMessage.setQos(qos);
            MqttTopic mqttTopic = mqttClient.getTopic(topic);
            if(Objects.nonNull(mqttTopic)){
                try{
                    MqttDeliveryToken publish = mqttTopic.publish(mqttMessage);
                    if(publish.isComplete()){
                        log.info("消息發(fā)送成功---->{}",message);
                    }
                }catch(Exception e){
                    log.error("消息發(fā)送異常",e);
                }
            }
        }else{
            reConnect();
        }
    }*/
}

接收消息部分

package mqttclient.callback;
import lombok.extern.slf4j.Slf4j;
import mqttclient.util.ParsingData2;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Slf4j
public class MqttMessageCallback2 implements MqttCallback {
    /**
     * 鏈接丟失時處理
     * @param throwable
     */
    @Override
    public void connectionLost(Throwable throwable) {
        //可以做重連 或者 其他業(yè)務處理
    }
    @Override
    public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
		System.out.println("接收到消息topic---->{}"+topic);
		System.out.println("接收到消息topic---->{}"+mqttMessage);
        log.info("接收到消息質量qos---->{}",mqttMessage.getQos());
		System.out.println("接收到消息質量qos---->{}"+mqttMessage.getQos());
        log.info("接收到消息具體信息---->{}",new String(mqttMessage.getPayload()));
		System.out.println("接收到消息具體信息---->{}"+mqttMessage.getPayload());
        //結合業(yè)務 編寫具體信息即可
    }
    @Override
    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
    }
}

這個兩個寫完之后只要有數(shù)據(jù)發(fā)送過來,這邊會自動進行接收打印。

是用mqtt網(wǎng)頁版圖形化界面進行模擬數(shù)據(jù)發(fā)送。

安裝mqtt后打開此網(wǎng)站:http://localhost:18083/

默認賬號是:admin / public

登錄后這邊可以設置中文:

模擬發(fā)送:這幾個地方不用改動但是一定要點擊綠色的連接才可以,進行發(fā)送。

需要修改的部分是:

然后點擊發(fā)送就可以收到信息了。 

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring?Security重寫AuthenticationManager實現(xiàn)賬號密碼登錄或者手機號碼登錄

    Spring?Security重寫AuthenticationManager實現(xiàn)賬號密碼登錄或者手機號碼登錄

    本文主要介紹了Spring?Security重寫AuthenticationManager實現(xiàn)賬號密碼登錄或者手機號碼登錄,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08
  • SpringBoot啟動后自動執(zhí)行方法的各種方式對比

    SpringBoot啟動后自動執(zhí)行方法的各種方式對比

    這篇文章主要為大家詳細介紹了SpringBoot啟動后自動執(zhí)行方法的各種方式和性能對比,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2025-04-04
  • Eclipse常用快捷鍵總結(必看篇)

    Eclipse常用快捷鍵總結(必看篇)

    下面小編就為大家?guī)硪黄狤clipse常用快捷鍵總結(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • java 后端生成pdf模板合并單元格表格的案例

    java 后端生成pdf模板合并單元格表格的案例

    這篇文章主要介紹了java 后端生成pdf模板合并單元格表格的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java新特性中Preview功能如何運行調試詳解

    Java新特性中Preview功能如何運行調試詳解

    這篇文章主要為大家介紹了Java新特性中Preview功能如何運行調試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 基于java線程安全問題及原理性分析

    基于java線程安全問題及原理性分析

    下面小編就為大家?guī)硪黄趈ava線程安全問題及原理性分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • jvm類加載器基礎解析

    jvm類加載器基礎解析

    這篇文章主要介紹了jvm類加載器基礎解析,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 詳解JAVA SPI機制和使用方法

    詳解JAVA SPI機制和使用方法

    這篇文章主要介紹了JAVA SPI機制的相關知識以及使用示例,文中代碼非常詳細,幫助大家更好的學習,感興趣的朋友可以了解下
    2020-06-06
  • maven的pom文件與打包詳解

    maven的pom文件與打包詳解

    pom文件定于了一個maven項目的maven配置,一般pom文件的放在項目或者模塊的根目錄下。本文詳細的介紹了pom文件配置,感興趣的可以了解一下
    2021-08-08
  • java編寫貪吃蛇小游戲

    java編寫貪吃蛇小游戲

    貪吃蛇是經典手機游戲,既簡單又耐玩。通過控制蛇頭方向吃蛋,使得蛇變長,從而獲得積分。今天我們就來用java來實現(xiàn)下貪吃蛇小游戲,有需要的小伙伴可以參考下
    2015-03-03

最新評論

清苑县| 新泰市| 明星| 得荣县| 将乐县| 克什克腾旗| 开原市| 秦皇岛市| 庆阳市| 东莞市| 洛阳市| 凌海市| 高青县| 大荔县| 石家庄市| 临洮县| 玛多县| 定边县| 德令哈市| 西吉县| 敦煌市| 康定县| 樟树市| 伊通| 壶关县| 兴和县| 静乐县| 定结县| 九江县| 锡林郭勒盟| 秦皇岛市| 靖边县| 遵义县| 德安县| 都匀市| 廊坊市| 青神县| 南昌市| 六枝特区| 建水县| 苗栗市|