订单服务给设备发消息
增加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 建立连接并且订阅主题.消费消息