Spring 集成 MQTT 推送消息

(mqtt java客戶(hù)端的使用參看這篇文章)

Spring Integration基于Eclipse Paho MQTT客戶(hù)端庫(kù)提供了支持MQTT協(xié)議的入站和出站通道適配器。但是使用起來(lái)不是很靈活(有可能是沒(méi)有深入理解??)。在參考了這篇文章后有了如下實(shí)現(xiàn):

1. maven依賴(lài)

    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-core</artifactId>
        <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-mqtt</artifactId>
        <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.2.0</version>
    </dependency>

2. 配置文件

  • applicationContext.xml
類(lèi)型 描述
DefaultMqttPahoClientFactory 客戶(hù)端工廠類(lèi),根據(jù)配置的選項(xiàng)(用戶(hù)名、密碼、服務(wù)器集群地址等)創(chuàng)建一個(gè)默認(rèn)的客戶(hù)端。
MqttPahoMessageHandler MQTT出站通道適配器的抽象類(lèi)的實(shí)現(xiàn),用于推送消息。
    <bean id="clientFactory"  
        class="org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory">  
        <property name="userName" value="${mqtt.username}"/>  
        <property name="password" value="${mqtt.password}"/>
        <property name="cleanSession" value="${mqtt.cleanSession}"/>
        <property name="keepAliveInterval" value="${mqtt.keepAliveInterval}"/>
        <property name="serverURIs">
            <array>
                <value>${mqtt.serverURI1}</value>
            </array>
        </property>
    </bean>

    <bean id="mqttHandler" class="org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler">  
        <constructor-arg name="clientId" value="${mqtt.clientId}"/>
        <constructor-arg name="clientFactory" ref="clientFactory"/>
        <property name="async" value="${mqtt.async}"/>
        <property name="defaultQos" value="${mqtt.defaultQos}"/>
        <property name="completionTimeout" value="${mqtt.completionTimeout}"/>
    </bean>
  • config.properties
#用戶(hù)名
mqtt.username=mqttPubClient
#密碼
mqtt.password=123456
#是否清除會(huì)話(huà)
mqtt.cleanSession=false
#服務(wù)端url
mqtt.serverURI1=tcp://localhost:1883
#是否異步發(fā)送
mqtt.async=true
#超時(shí)時(shí)間
mqtt.completionTimeout=20000
#心跳
mqtt.keepAliveInterval=30
#客戶(hù)端id
mqtt.clientId=mqttPubClient
#默認(rèn)的消息服務(wù)質(zhì)量
mqtt.defaultQos=1

3. 調(diào)用

    @Resource  
    private MqttPahoMessageHandler mqttHandler;  
    
    @Override
    public void send(String topic, String content) {
        // 構(gòu)建消息
        Message<String> messages = MessageBuilder.withPayload(content).setHeader(MqttHeaders.TOPIC, topic).build();  
        // 發(fā)送消息
        mqttHandler.handleMessage(messages);
    }

示例代碼:https://github.com/brandonbai/mqtt-spring-boot/tree/master/samples/mqtt-spring-sample

鏈接
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,663評(píng)論 19 139
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,893評(píng)論 2 45
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,282評(píng)論 6 342
  • 沒(méi)有年輪的樹(shù) : 植 覚 __ 微型散文詩(shī) 作者: 何 強(qiáng) " 發(fā)現(xiàn)你不曾有過(guò),也將不會(huì)為...
    天邊的凝紅閱讀 162評(píng)論 0 2

友情鏈接更多精彩內(nèi)容