如何用代码实现发送MQTT消息
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,MQTT协议因低延迟、效率高在工业物联网领域使用的频率特别高,前面两篇文档分别对MQTT内容和MQTT服务器做了简单介绍,今天本文从实战的角度阐述如何用代码实现发送MQTT消息。1.引入相关的依赖or
千家信息网最后更新 2025年12月02日如何用代码实现发送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安全错误
数据库的锁怎样保障安全
自建服务器集群
数据库索引是自动生成的吗
计算机网络技术自考答案
一网络安全为主的手抄报
变形金刚数据库
知网数据库包含三调的标准吗
成都软件开发模式
网络技术公司机构模式
门神网络安全
服务器厂家排名
mpp数据库哪个好
GUI750怎样配置服务器
5G网络技术基站建设公司
数据库霜之哀伤
88服务器
博客内容在数据库怎么存
服务器性能监测指标
任务管理器注册服务器
光遇服务器更新一般要多久
2021国家网络安全宣传周展板
华为针对网络安全会议的讲话
易渠网络技术
计算机网络技术自考答案
安恒招聘网络安全工程师
代理服务器代理上传吗
数据库怎么才能更新缓存
流放者柯南服务器管理工具
财务网络安全实施情况
小程序数据库不存在
王者荣耀区服务器