如何用代码实现发送MQTT消息
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,MQTT协议因低延迟、效率高在工业物联网领域使用的频率特别高,前面两篇文档分别对MQTT内容和MQTT服务器做了简单介绍,今天本文从实战的角度阐述如何用代码实现发送MQTT消息。1.引入相关的依赖or
千家信息网最后更新 2025年01月24日如何用代码实现发送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: 9090mqtt: 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@IntegrationComponentScanpublic 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
@RestControllerpublic class MessageController { @Autowired MqttGateway mqttGateway; @RequestMapping("/sendMqttMessage") public String sendMqttMessage(String message, String topic) { mqttGateway.sendToMqtt(message, topic); return "ok"; }}
测试
接下来就可以在POSTMAN中进行测试了,输入消息内容和主题,就可以在相应的频道发送消息了。如果使用其它的消息客户端进行测试的话,可以接受到消息
消息
推送
测试
配置
内容
服务器
服务
代码
接下来
主题
信息
实战
客户
客户端
工业
接口
效率
文档
角度
领域
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全技术管理专业就业方向
千兆网络技术跳线
千支网络技术有限公司
全市网络安全会议召开
服务器鼠标没反应键盘有反应
山东无名逝者数据库官网
建立数据库test
网络安全知识答题问题答案
淮南网络安全排名
软件开发 上海好 还是无锡好
数据库标识号
十年软件开发经历自述
凝聚互联网科技公司
内蒙古界面网络技术
商城数据库免费下载
宣武区软件开发者
手游足球数据库
忻州网络技术哪个好
列簇存储数据库
深圳益城软件开发公司吗
软件开发项目怎样才算成功
芯片软件开发包括
易管网数据库怎么弄
软件开发团队时间表
数据库的数据具有的特性
tcl软件开发实习生工资
spl2000数据库安装教程
澳洲软件开发工资标准
学校网络安全管理摸排报告
春晚数据库的需求