首先导入依赖
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
除了上面的依赖以外还有很多其他可以整合mqtt的依赖,但是个人觉得mqttv3最好理解,代码写起来比较通顺。
配置文件
这是最重要的一步,连接broker
@Configuration
public class MqttConfig {
private static final String clientId = "mqtt_test";
private static final String broker = "tcp://127.0.0.1:1883";
@Bean("Client")
public MqttClient mqttClient() throws MqttException {
MqttClient mqttClient = new MqttClient(broker,clientId);
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
//连接broker
mqttClient.connect(options);
System.out.println("已经和broker链接");
return mqttClient;
}
}
当然,如果服务器配置了密码,那就需要设置密码
service
@Service
public class PublishService {
@Autowired
MqttClient client;
public void publishMessage(String topic,String content) throws MqttException {
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(2);
client.publish(topic,message);
}
}
controller
@RestController
public class MqttTestController {
@Autowired
MqttClient mqttClient;
@Autowired
MqttClient client;
@Autowired
PublishService service;
@GetMapping("publish")
public void publicMessage(String topic,String content) throws MqttException {
service.publishMessage(topic,content);
}
}