package com.qianwen.mdc.collect.config;
|
|
import org.apache.iotdb.session.pool.SessionPool;
|
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
|
import org.apache.iotdb.tsfile.write.record.Tablet;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
/**
|
* iotdb连接创建
|
*/
|
@Component
|
@Configuration
|
public class IotDBSessionConfig {
|
|
private static final Logger log = LoggerFactory.getLogger(IotDBSessionConfig.class);
|
|
@Value("${iotdb.username:root}")
|
private String username;
|
|
@Value("${iotdb.password:root}")
|
private String password;
|
|
@Value("${iotdb.host:127.0.0.1}")
|
private String ip;
|
|
@Value("${iotdb.port:6667}")
|
private int port;
|
|
@Value("${iotdb.maxSize:10}")
|
private int maxSize;
|
|
private static SessionPool sessionPool;
|
|
public SessionPool getSessionPool() {
|
if (sessionPool == null) {
|
sessionPool = new SessionPool(ip, port, username, password, maxSize);
|
}
|
|
return sessionPool;
|
}
|
|
/**
|
* 节点路径如:root.a1eaKSRpRty.CA3013A303A25467
|
* @param deviceId
|
* @param time
|
* @param measurements
|
* @param values
|
*/
|
public void insertRecord(String deviceId, long time, List<String> measurements, List<String> values) {
|
getSessionPool();
|
try {
|
//性能对比insertTablet > insertRecord指定类型 > insertRecord不指定类型 > JDBC
|
log.info("iotdb数据入库:device_id:[{}], measurements:[{}], values:[{}]", deviceId, measurements, values);
|
sessionPool.insertRecord(deviceId, time, measurements, values);
|
} catch (Exception e) {
|
log.error("IotDBSession insertRecord失败: deviceId={}, time={}, measurements={}, values={}, error={}",
|
deviceId, time, measurements, values, e.getMessage());
|
}
|
}
|
public void insertAlignedRecord(String multiSeriesId, long time, List<String> measurements, List<String> values) {
|
getSessionPool();
|
try {
|
//性能对比insertTablet > insertRecord指定类型 > insertRecord不指定类型 > JDBC
|
log.info("iotdb数据入库insertAlignedRecord:multiSeriesId:[{}], measurements:[{}], values:[{}]", multiSeriesId, measurements, values);
|
sessionPool.insertAlignedRecord(multiSeriesId, time, measurements, values);
|
} catch (Exception e) {
|
log.error("IotDBSession insertAlignedRecord失败: multiSeriesId={}, time={}, measurements={}, values={}, error={}",
|
multiSeriesId, time, measurements, values, e.getMessage());
|
}
|
}
|
|
public void insertAlignedTablet(Tablet tablet) {
|
getSessionPool();
|
try {//sessionPool.temp
|
//性能对比insertTablet > insertRecord指定类型 > insertRecord不指定类型 > JDBC
|
sessionPool.insertAlignedTablet(tablet);
|
} catch (Exception e) {
|
log.error("IotDBSession insertAlignedRecord失败: multiSeriesId={}, time={}, measurements={}, values={}, error={}",e);
|
}
|
}
|
|
}
|