如何用代码实现发送MQTT消息-创新互联

MQTT协议因低延迟、效率高在工业物联网领域使用的频率特别高,前面两篇文档分别对MQTT内容和MQTT服务器做了简单介绍,今天本文从实战的角度阐述如何用代码实现发送MQTT消息。

为鄂城等地区用户提供了全套网页设计制作服务,及鄂城网站建设行业解决方案。主营业务为网站制作、成都网站设计、鄂城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1.引入相关的依赖

org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-integration org.springframework.integration spring-integration-mqtt

2.在application.yml配置MQTT服务器信息

server:   port: 9090 mqtt:   host: tcp://127.0.0.1:1883   clientinid: mqttinId   clientoutid: mqttoutid   topic: virus   qoslevel: 1   #MQTT 认证   username:  xxx   password: yyy   # 10s   timeout: 10000   #20s   keepalive: 20

3.配置MQTT消息推送配置

@Configuration @IntegrationComponentScan public class MqttSenderConfig {     @Value("${mqtt.username}")     private String username;     @Value("${mqtt.password}")     private String password;     @Value("${mqtt.host}")     private String hostUrl;     @Value("${mqtt.clientinid}")     private String clientId;     @Value("${mqtt.topic}")     private String defaultTopic;     @Value("${mqtt.timeout}")     private int completionTimeout;     @Bean     public MqttConnectOptions getMqttConnectOptions(){         MqttConnectOptions mqttConnectOptions=new MqttConnectOptions();         mqttConnectOptions.setCleanSession(true);         mqttConnectOptions.setConnectionTimeout(10);         mqttConnectOptions.setKeepAliveInterval(90);         mqttConnectOptions.setAutomaticReconnect(true);         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();     } }

4.MQTT消息推送接口

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

5.MQTT消息推送API

@RestController public class MessageController {     @Autowired     MqttGateway mqttGateway;     @RequestMapping("/sendMqttMessage")     public String sendMqttMessage(String message, String topic) {         mqttGateway.sendToMqtt(message, topic);         return "ok";     } }

测试

接下来就可以在POSTMAN中进行测试了,输入消息内容和主题,就可以在相应的频道发送消息了。如果使用其它的消息客户端进行测试的话,可以接受到消息

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:如何用代码实现发送MQTT消息-创新互联
分享URL:http://hbruida.cn/article/pgihi.html