引入依赖
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
mqtt配置类
import lombok.Data;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Component
@Configuration
@Data
public class MqttConfiguration {
String broker = "tcp://xxx.xxx.x.xx:1883"; //默认用tcp去接
String username = "账号";
String password = "密码";
@Bean
public void getMqttCustomerClient() {
String topic = "订阅主题";
String clientid = "mqttx_42dfb39b"; 保证唯一就行
int qos = 0;
try {
MqttClient client = new MqttClient(broker, clientid, new MemoryPersistence());
// 连接参数
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(username);
options.setPassword(password.toCharArray());
options.setConnectionTimeout(60);
options.setKeepAliveInterval(60);
client.connect(options);
// 设置回调
client.subscribe(topic, qos);
client.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {
try {
client.connect();
} catch (MqttException e) {
throw new RuntimeException(e);
}
System.out.println("connectionLost: " + cause.getMessage());
}
public void messageArrived(String topic, MqttMessage message) {
System.out.println("topic: " + topic); //主题
System.out.println("Qos: " + message.getQos());//Qos
System.out.println("message content: " + new String(message.getPayload())); //订阅消息内容
}
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------" + token.isComplete());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
//需要订阅多个 弄多个Bean就可以
}