消费rmq中mqtt协议的demo
主函数类:
public static void main(String[] args) throws MqttException {
String clientId = UUIDTool.getRandomUUID();
MqttClient client = new MqttClient("tcp://10.19.141.219:1883", clientId,
new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setUserName("root");
options.setPassword("QhVGBvvF".toCharArray());
// 设置超时时间
options.setConnectionTimeout(10);
options.setAutomaticReconnect(true);
// 设置会话心跳时间
options.setKeepAliveInterval(20);
client.setCallback(new PushCallbackService());
client.connect(options);
client.subscribe("ianalysis_dac/admin", 1);
}
统一提供的回调函数类
public class PushCallbackService implements MqttCallback {
private static final HikGaLogger logger = HikGaLoggerFactory.getLogger(PushCallbackService.class);
@Override
public void connectionLost(Throwable throwable) {
logger.info("RabbitMQ MQTT connection is break!", throwable);
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
logger.info("receive one message, topic:{}, Qos:{}, content:{}",
topic,
message.getQos(),
new String(message.getPayload(), Constant.ENCODING_UTF8));
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
logger.info("RabbitMQ deliveryComplete, isComplete:{}, messageId:{}",
iMqttDeliveryToken.isComplete(),
iMqttDeliveryToken.getMessageId());
}
}