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

SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn)

 更新時(shí)間:2021年04月21日 10:05:53   作者:大道迷途  
這篇文章主要介紹了SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        這幾天在弄后端管理系統(tǒng)向指定的Android客戶端推送消息的功能模塊,查閱了網(wǎng)上很多博客介紹的許多方式,最終選擇基于MQTT協(xié)議來實(shí)現(xiàn),MQTT是一個(gè)輕量級(jí)的消息發(fā)布/訂閱協(xié)議,它是實(shí)現(xiàn)基于手機(jī)客戶端的消息推送服務(wù)器的理想解決方案。

        實(shí)現(xiàn)MQTT協(xié)議的中間件有很多,我用的是Apollo服務(wù)器,如何搭建MQTT服務(wù)器,請查閱其他資料。這里,主要介紹SpringBoot2.0集成MQTT實(shí)現(xiàn)消息推送的功能。好,正式開始:

        本文采用Gateway綁定的方式,網(wǎng)上也有介紹但不全面,還有其他采用Paho MQTT Client庫的方式實(shí)現(xiàn)的。

         第一,pom配置,我們需要引入相關(guān)jar:        

<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服務(wù)器基本信息,在springBoot配置文件application.properties中配置,添加如下:

#MQTT配置信息
#MQTT-用戶名
spring.mqtt.username=admin
#MQTT-密碼
spring.mqtt.password=password
#MQTT-服務(wù)器連接地址,如果有多個(gè),用逗號(hào)隔開,如:tcp://127.0.0.1:61613,tcp://192.168.2.133:61613
spring.mqtt.url=tcp://127.0.0.1:61613
#MQTT-連接服務(wù)器默認(rèn)客戶端ID
spring.mqtt.client.id=mqttId
#MQTT-默認(rèn)的消息推送主題,實(shí)際可在調(diào)用接口時(shí)指定
spring.mqtt.default.topic=topic

    第三,配置MQTT消息推送配置類,

/**
 * 〈一句話功能簡述〉<br> 
 * 〈MQTT發(fā)送消息配置〉
 *
 * @author AnswerChang
 * @create 2018/6/4
 * @since 1.0.0
 */
@Configuration
@IntegrationComponentScan
public class MqttSenderConfig {
 
    @Value("${spring.mqtt.username}")
    private String username;
 
    @Value("${spring.mqtt.password}")
    private String password;
 
    @Value("${spring.mqtt.url}")
    private String hostUrl;
 
    @Value("${spring.mqtt.client.id}")
    private String clientId;
 
    @Value("${spring.mqtt.default.topic}")
    private String defaultTopic;
 
    @Bean
    public MqttConnectOptions getMqttConnectOptions(){
        MqttConnectOptions mqttConnectOptions=new MqttConnectOptions();
        mqttConnectOptions.setUserName(username);
        mqttConnectOptions.setPassword(password.toCharArray());
        mqttConnectOptions.setServerURIs(new String[]{hostUrl});
        mqttConnectOptions.setKeepAliveInterval(2);
        return mqttConnectOptions;
    }
    @Bean
    public MqttPahoClientFactory mqttClientFactory() {
        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
        factory.setConnectionOptions(getMqttConnectOptions());
        return factory;
    }
    @Bean
    @ServiceActivator(inputChannel = "mqttOutboundChannel")
    public MessageHandler mqttOutbound() {
        MqttPahoMessageHandler messageHandler =  new MqttPahoMessageHandler(clientId, mqttClientFactory());
        messageHandler.setAsync(true);
        messageHandler.setDefaultTopic(defaultTopic);
        return messageHandler;
    }
    @Bean
    public MessageChannel mqttOutboundChannel() {
        return new DirectChannel();
    }
}

        第四,配置MqttGateway消息推送接口類,在sendToMqtt(String data,@Header(MqttHeaders.TOPIC)String topic)接口中,data為發(fā)送的消息內(nèi)容,topic為主題。指定topic,則我們的接口可以根據(jù)需要,向不同的主題發(fā)送消息,方便靈活應(yīng)用。如果不指定,則使用默認(rèn)配置的主題。

@MessagingGateway(defaultRequestChannel = "mqttOutboundChannel")
public interface MqttGateway {
    void sendToMqtt(String data,@Header(MqttHeaders.TOPIC) String topic);
}

        最后,寫個(gè)接口類測試下功能,用Postman調(diào)用sendMqtt.do接口,往hello主題發(fā)送消息,用MQTTLens訂閱hello主題,從下面截圖,可以看出可以正常往MQTT服務(wù)發(fā)送消息了,而且可以訂閱到。

@RestController
@RequestMapping("/test")
public class TestController {
 
    @Autowired
    private MqttGateway mqttGateway;
 
    @RequestMapping("/sendMqtt.do")
    public String sendMqtt(String  sendData){
        mqttGateway.sendToMqtt(sendData,"hello");
        return "OK";
    }
}

到此這篇關(guān)于SpringBoot2.0集成MQTT消息推送功能實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot MQTT消息推送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java熱門筆試試題整理

    Java熱門筆試試題整理

    給大家整理了現(xiàn)在很熱門的java程序員面試時(shí)候的筆試試題以及答案,希望能幫助到你。
    2017-11-11
  • Java基于fork/koin類實(shí)現(xiàn)并發(fā)排序

    Java基于fork/koin類實(shí)現(xiàn)并發(fā)排序

    這篇文章主要介紹了Java基于fork/koin類實(shí)現(xiàn)并發(fā)排序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • JMeter中Java Request采樣器的使用指南

    JMeter中Java Request采樣器的使用指南

    Apache JMeter 是一款功能強(qiáng)大的性能測試工具,支持多種協(xié)議和測試場景,JMeter還允許通過 Java Request采樣器 調(diào)用自定義的Java代碼,本文將詳細(xì)介紹如何在JMeter中使用Java Request采樣器,需要的朋友可以參考下
    2025-02-02
  • 通過實(shí)例深入學(xué)習(xí)Java的Struts框架中的OGNL表達(dá)式使用

    通過實(shí)例深入學(xué)習(xí)Java的Struts框架中的OGNL表達(dá)式使用

    這篇文章主要通過實(shí)例介紹了Java的Strus框架中的OGNL表達(dá)式使用,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • 利用stream sorted進(jìn)行降序排序

    利用stream sorted進(jìn)行降序排序

    這篇文章主要介紹了利用stream sorted進(jìn)行降序排序,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案

    詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案

    本篇文章主要介紹了詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot與velocity的結(jié)合的示例代碼

    SpringBoot與velocity的結(jié)合的示例代碼

    本篇文章主要介紹了SpringBoot與velocity的結(jié)合的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 關(guān)于MyBatis模糊查詢的幾種實(shí)現(xiàn)方式

    關(guān)于MyBatis模糊查詢的幾種實(shí)現(xiàn)方式

    在實(shí)際項(xiàng)目中,我們會(huì)經(jīng)常對數(shù)據(jù)做一些模糊查詢的操作,這時(shí)候就需要利用到 like字段,那么在Mybatis中,有哪些方式可以實(shí)現(xiàn)模糊查詢呢,需要的朋友可以參考下
    2023-05-05
  • Spring Boot讀取配置屬性常用方法解析

    Spring Boot讀取配置屬性常用方法解析

    這篇文章主要介紹了Spring Boot讀取配置屬性常用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java進(jìn)程內(nèi)存機(jī)制方式

    java進(jìn)程內(nèi)存機(jī)制方式

    文章講解了JVM內(nèi)存管理機(jī)制,涵蓋內(nèi)存區(qū)域劃分(堆、方法區(qū)、棧等)、GC算法與收集器選擇、內(nèi)存溢出類型及排查工具、調(diào)優(yōu)策略和常見面試問題,強(qiáng)調(diào)掌握該知識(shí)對Java工程師的重要性
    2025-07-07

最新評(píng)論

喀什市| 南康市| 高要市| 太仆寺旗| 罗平县| 虎林市| 曲沃县| 普安县| 荆门市| 太仆寺旗| 东乡| 泰兴市| 扎鲁特旗| 万荣县| 洛阳市| 阿尔山市| 永仁县| 乌兰察布市| 龙游县| 古丈县| 封开县| 仪陇县| 平塘县| 惠水县| 留坝县| 贵德县| 社会| 台北市| 泽普县| 荔浦县| 邓州市| 葫芦岛市| 邢台县| 清镇市| 蒙城县| 陆良县| 绍兴县| 奉化市| 菏泽市| 顺义区| 澄江县|