千家信息网

如何用代码实现发送MQTT消息

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,MQTT协议因低延迟、效率高在工业物联网领域使用的频率特别高,前面两篇文档分别对MQTT内容和MQTT服务器做了简单介绍,今天本文从实战的角度阐述如何用代码实现发送MQTT消息。1.引入相关的依赖or
千家信息网最后更新 2024年11月26日如何用代码实现发送MQTT消息

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


1.引入相关的依赖


org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-integrationorg.springframework.integrationspring-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安全错误 数据库的锁怎样保障安全 计算机网络技术系统集成专业 nas服务器建设 金山区营销软件开发制造价格 帝国神话自建服务器爵位 宏武互联网科技坊前分公司 腾讯云服务器网速如何跑满 mat4软件开发商 如何远程访问自己的电脑服务器 软件开发如何能接到私活 fifaut数据库 如何在数据库中创建数据库用户 河南省网络安全保卫总队位置 广州哪里有做软件开发 幼儿园网络安全教学活动 数据库高校活动策划 网络安全的战队名称 行装网络技术有限公司官网 天际股份历史交易数据库 高青管理erp软件开发 数据库切换本地连接字符串 网络安全板报设计图案大全贴纸 计算机网络安全研究背景 传统数据库培训 广元网络技术要多少钱 网络安全在我国的研究概况 如何远程访问自己的电脑服务器 青浦区综合网络技术厂家直销 服务器一直不关机可以用多久 网络安全与管理研究生就业 网络数据库技术是指哪些
0