介绍
今天就跟大家聊聊有关怎么在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