#订单服务给设备发消息

订单服务给设备发消息

增加MqttProducer

生产者(MqttProducer)发送消息到消息中间件(emqx)指定的Topic

@Component
public class MqttProducer{
    
    
    @Autowired
    private MqttClient mqttClient;
    
    
    public Boolean send(String topic,String message){
    
    
        Boolean success = false;
        try{
    
    
            mqttClient.publish(topic,message.getBytes(),0,true);
            success = true;
        }catch(MqttException e){
    
    
            //接入告警系统1秒钟 超过3次失败 告警
            log.error("给EMQX发送消息失败,topic:{},消息:{}",topic,message,e);
        }
        return success;
    }
}

增加测试类

package cn.tedu.charging.order;

import cn.tedu.charging.order.mqtt.MqttProducer;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MqttTests {
    
    

    @Autowired
    private MqttProducer mqttProducer;
    
    @Test
    public void testSend(){
    
    
        String topic = "java";
        String message = "java基础-基本语法-Long";
        mqttProducer.publish(topic,message);
    }

}

设备连接EMQX接收消息

通过mqttfx 客户端接收消息

启动mqttfx 模拟设备的一个软件

Mqfftx 启动后,先点击 connect 连接 emqx 消息中间件 地址:端口 127.0.0.1:1883

点击 Subscribe (订阅) 输入正确的topic 要和测试类 的topic 写成一致 java

在这里插入图片描述

设备消费消息

Mqttfx 建立连接并且订阅主题.消费消息

总结

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_68935893/article/details/143080142