怎么在SpringBoot2.0中使用MQTT实现一个消息推送功能

  介绍

今天就跟大家聊聊有关怎么在SpringBoot2.0中使用MQTT实现一个消息推送功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新弹簧应用的初始搭建以及开发过程,springboot也是一个服务于框架的框架,服务范围是简化配置文件。

,第一,pom配置,我们需要引入相关jar:,,,,,

& lt; dependency>   ,,,& lt; groupId> org.springframework.integration   ,,,& lt; artifactId> spring-integration-stream   & lt;/dependency>   & lt; dependency>   ,,& lt; groupId> org.springframework.integration   ,,& lt; artifactId> spring-integration-mqtt   & lt;/dependency>

,,,,,,,,第二,配置MQTT服务器基本信息,在springBoot配置文件的应用程序。属性中配置,添加如下:

# MQTT配置信息   # MQTT -用户名   spring.mqtt.username=admin   # MQTT -密码   spring.mqtt.password=密码   # MQTT -服务器连接地址,如果有多个,用逗号隔开,如:tcp://127.0.0.1:61613, tcp://192.168.2.133:61613   spring.mqtt.url=tcp://127.0.0.1:61613   # MQTT -连接服务器默认客户端ID   spring.mqtt.client.id=mqttId   # MQTT -默认的消息推送主题,实际可在调用接口时指定   spring.mqtt.default.topic=主题

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

/* *   ,* <一句话功能简述> & lt; br>,   ,*   ,*   ,* @author  AnswerChang   ,* @create  2018/6/4   ,* @since  1.0.0   ,*/@ configuration   @IntegrationComponentScan   public  class  MqttSenderConfig  {   ,   ,,,@ value (“$ {spring.mqtt.username}“)   ,,,private  String 用户名;   ,   ,,,@ value (“$ {spring.mqtt.password}“)   ,,,private  String 密码;   ,   ,,,@ 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(用户名);   ,,,,,,,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 工厂;   ,,,}   ,,@ bean   ,,,@ServiceActivator (=inputChannel “mqttOutboundChannel")   ,,,public  MessageHandler  mqttOutbound (), {   ,,,,,,,MqttPahoMessageHandler  messageHandler =,, new  MqttPahoMessageHandler (clientId, mqttClientFactory ());   ,,,,,,,messageHandler.setAsync(真正的);   ,,,,,,,messageHandler.setDefaultTopic (defaultTopic);   ,,,,,,,return  messageHandler;   ,,,}   ,,@ bean   ,,,public  MessageChannel  mqttOutboundChannel (), {   ,,,,,,,return  new  DirectChannel ();   ,,,}   }

,,,,,,,,第四,配置MqttGateway消息推送接口类,在sendToMqtt(字符串数据,@Header (MqttHeaders.TOPIC)字符串主题)接口中,数据为发送的消息内容,主题为主题。指定主题,则我们的接口可以根据需要,向不同的主题发送消息,方便灵活应用。如果不指定,则使用默认配置的主题。

@MessagingGateway (=defaultRequestChannel “mqttOutboundChannel")   public  interface  MqttGateway  {   ,,,void  sendToMqtt (String 数据,@Header (MqttHeaders.TOPIC), String 主题);   }

,,,,,,,,最后,写个接口类测试下功能,用邮差调用sendMqtt。null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在SpringBoot2.0中使用MQTT实现一个消息推送功能