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 measurements, List 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 measurements, List 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); } } }