All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.thinkingdata.kafka.consumer.persist.RedisStorePersistService Maven / Gradle / Ivy

package cn.thinkingdata.kafka.consumer.persist;

public class RedisStorePersistService{

}
//import cn.thinkingdata.kafka.constant.KafkaMysqlOffsetParameter;
//import cn.thinkingdata.kafka.consumer.KafkaSubscribeConsumeThread;
//import cn.thinkingdata.kafka.consumer.dao.KafkaConsumerOffset;
//import cn.thinkingdata.kafka.consumer.persist.MysqlOffsetPersist;
//import cn.thinkingdata.kafka.consumer.persist.StorePersist;
//import cn.thinkingdata.kafka.util.CommonUtils;
//import cn.thinkingdata.kafka.util.RetryerUtil;
//import cn.thinkingdata.ta.etl.domain.Do_ta_company_info;
//import cn.thinkingdata.ta.etl.mapper.MapperTaMysql;
//import cn.thinkingdata.ta.etl.service.TaCenteredAlertSendService;
//import com.github.rholder.retry.RetryException;
//import com.github.rholder.retry.Retryer;
//import com.google.common.base.Predicates;
//import com.google.common.base.Throwables;
//import org.apache.commons.collections.MapUtils;
//import org.apache.commons.lang.StringUtils;
//import org.joda.time.DateTime;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.data.redis.connection.RedisConnection;
//import org.springframework.data.redis.core.RedisCallback;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.serializer.RedisSerializer;
//import org.springframework.stereotype.Service;
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.Callable;
//import java.util.concurrent.ExecutionException;
//
//@Service
//public class RedisStorePersistService implements StorePersist {
//
//    private static final Logger logger = LoggerFactory
//            .getLogger(RedisStorePersistService.class);
//
//    public static volatile Boolean restartKafkaConsumerFlag = false;
//    public static volatile Boolean stopEtlWithExceptionFlag = false;
//
//    @Autowired
//    @Qualifier("redisKafkaTemplate")
//    private RedisTemplate redisKafkaTemplate;
//
//    @Autowired
//    private TaCenteredAlertSendService taCenteredAlertSendService;
//
//    @Autowired
//    private MapperTaMysql mapperTaMysql;
//
//    private DateTime lastMailForOffsetReset = null;
//
//
//    // private Retryer retryerWithResultNull = RetryerUtil
//    // .initRetryerWithIfResult(Predicates.isNull());
//
//    // 4分钟重试,不行就退出
//    private Retryer retryerWithResultFails = RetryerUtil
//            .initRetryerWithStopTimeIfResult(240L, Predicates.equalTo(false));
//
//    // 无限重试
//    private Retryer retryer = cn.thinkingdata.ta.etl.util.RetryerUtil.initRetryer();
//
//
//    public KafkaConsumerOffset readOffset(String topic, Integer partition) {
//        return redisKafkaTemplate.execute(new RedisCallback() {
//            @Override
//            public KafkaConsumerOffset doInRedis(RedisConnection redisConnection) {
//                try {
//                    if (partition == null || StringUtils.isBlank(topic)) {
//                        logger.error("read kafkaConsumerOffset from redis error, the topic is "
//                                + topic + ", the partition is " + partition);
//                        return null;
//                    }
//                    KafkaConsumerOffset kafkaConsumerOffset = new KafkaConsumerOffset();
//                    RedisSerializer serializer = redisKafkaTemplate
//                            .getStringSerializer();
////                    KafkaMysqlOffsetParameter.kafkaClusterName = "tga";
////                    KafkaMysqlOffsetParameter.consumerGroup = "taRealtimeEtlGroup";
//                    String redisKeystr = KafkaMysqlOffsetParameter.kafkaClusterName
//                            + "-"
//                            + topic
//                            + "-"
//                            + partition
//                            + "-"
//                            + KafkaMysqlOffsetParameter.consumerGroup;
//                    byte[] redisKey = serializer.serialize(redisKeystr);
//                    Map kafkaConsumerOffsetMapByte = redisConnection.hGetAll(redisKey);
//                    if (MapUtils.isNotEmpty(kafkaConsumerOffsetMapByte)) {
//                        for (byte[] key : kafkaConsumerOffsetMapByte.keySet()) {
//                            if ("oid".equals(serializer.deserialize(key))) {
//                                byte[] oidByte = kafkaConsumerOffsetMapByte.get(key);
//                                if (oidByte != null) {
////                                    Integer oid = Integer.parseInt(serializer
////                                            .deserialize(oidByte));
//                                    kafkaConsumerOffset.setOid(Integer.parseInt(serializer.deserialize(oidByte)));
//                                }
//                            }
//                            if ("partition".equals(serializer.deserialize(key))) {
//                                byte[] partitionByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (partitionByte != null) {
//                                    kafkaConsumerOffset.setPartition(Integer.parseInt(serializer.deserialize(partitionByte)));
//                                }
//                            }
//                            if ("topic".equals(serializer.deserialize(key))) {
//                                byte[] topicByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (topicByte != null) {
//                                    kafkaConsumerOffset.setTopic(serializer.deserialize(topicByte));
//                                }
//                            }
//                            if ("consumer_group".equals(serializer.deserialize(key))) {
//                                byte[] consumer_groupByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (consumer_groupByte != null) {
//                                    kafkaConsumerOffset.setConsumer_group(serializer.deserialize(consumer_groupByte));
//                                }
//                            }
//                            if ("offset".equals(serializer.deserialize(key))) {
//                                byte[] offsetByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (offsetByte != null) {
//                                    kafkaConsumerOffset.setOffset(Long.parseLong(serializer.deserialize(offsetByte)));
//                                }
//                            }
//                            if ("last_flush_offset".equals(serializer.deserialize(key))) {
//                                byte[] last_flush_offsetByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (last_flush_offsetByte != null) {
//                                    kafkaConsumerOffset.setLast_flush_offset(Long.parseLong(serializer.deserialize(last_flush_offsetByte)));
//                                }
//                            }
//                            if ("kafka_cluster_name".equals(serializer.deserialize(key))) {
//                                byte[] kafka_cluster_nameByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (kafka_cluster_nameByte != null) {
//                                    kafkaConsumerOffset.setKafka_cluster_name(serializer.deserialize(kafka_cluster_nameByte));
//                                }
//                            }
//                            if ("owner".equals(serializer.deserialize(key))) {
//                                byte[] ownerByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (ownerByte != null) {
//                                    kafkaConsumerOffset.setOwner(serializer.deserialize(ownerByte));
//                                }
//                            }
//                            if ("update_time".equals(serializer.deserialize(key))) {
//                                byte[] update_timeByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (update_timeByte != null) {
//                                    kafkaConsumerOffset.setUpdate_time(new Date(Long.parseLong(serializer.deserialize(update_timeByte))));
//                                }
//                            }
//                            if ("create_time".equals(serializer.deserialize(key))) {
//                                byte[] create_timeByte = kafkaConsumerOffsetMapByte
//                                        .get(key);
//                                if (create_timeByte != null) {
//                                    kafkaConsumerOffset.setCreate_time(new Date(Long.parseLong(serializer.deserialize(create_timeByte))));
//                                }
//                            }
//                        }
//                    }
//                    if (!kafkaConsumerOffset.isNull()) {
//                        if (kafkaConsumerOffset.getCount() == null) {
//                            kafkaConsumerOffset.setCount(0L);
//                        }
//                    }
//                    logger.info("kafkaConsumerOffset in redis is " + kafkaConsumerOffset);
//                    return kafkaConsumerOffset;
//                } catch (Exception e) {
//                    logger.error("read kafkaConsumerOffset from redis error, the topic is "
//                            + topic
//                            + ", the partition is "
//                            + partition
//                            + ", the error is "
//                            + CommonUtils.getStackTraceAsString(e));
//                    return null;
//                }
//            }
//        });
//    }
//
//    // private Boolean clearOffset(String topic, Integer partition) {
//    // return redisTemplate.execute(new RedisCallback() {
//    // @Override
//    // public Boolean doInRedis(RedisConnection redisConnection) {
//    // try {
//    // String redisKeystr = KafkaMysqlOffsetParameter.kafkaClusterName
//    // + "-"
//    // + topic
//    // + "-"
//    // + partition
//    // + "-"
//    // + KafkaMysqlOffsetParameter.consumerGroup;
//    // RedisSerializer serializer = redisTemplate
//    // .getStringSerializer();
//    // byte[] redisKey = serializer.serialize(redisKeystr);
//    // Long del = redisConnection.del(redisKey);
//    // if (del != 1L) {
//    // logger.error("clear kafkaConsumerOffset from redis error, the topic is "
//    // + topic
//    // + ", the partition is "
//    // + partition
//    // + ", the del number is " + del.toString());
//    // }
//    // return true;
//    // } catch (Exception e) {
//    // logger.error("clear kafkaConsumerOffset from redis error, the topic is "
//    // + topic
//    // + ", the partition is "
//    // + partition
//    // + ", the error is "
//    // + CommonUtils.getStackTraceAsString(e));
//    // return false;
//    // }
//    // }
//    // });
//    // }
//
//    private Boolean saveOffset(KafkaConsumerOffset kafkaConsumerOffset) {
//        return redisKafkaTemplate.execute(new RedisCallback() {
//            @Override
//            public Boolean doInRedis(RedisConnection redisConnection) {
//                try {
//                    if (kafkaConsumerOffset == null
//                            || kafkaConsumerOffset.isNull()) {
//                        logger.error("save offset fail in redis! kafkaConsumerOffset is "
//                                + kafkaConsumerOffset);
//                        return true;
//                    }
//                    RedisSerializer serializer = redisKafkaTemplate
//                            .getStringSerializer();
//                    String redisKeystr = kafkaConsumerOffset
//                            .getKafka_cluster_name()
//                            + "-"
//                            + kafkaConsumerOffset.getTopic()
//                            + "-"
//                            + kafkaConsumerOffset.getPartition()
//                            + "-"
//                            + kafkaConsumerOffset.getConsumer_group();
//                    byte[] redisKey = serializer.serialize(redisKeystr);
//                    Map redisValue = new HashMap();
//                    if (kafkaConsumerOffset.getOid() != null) {
//                        redisValue.put(serializer.serialize("oid"), serializer
//                                .serialize(kafkaConsumerOffset.getOid()
//                                        .toString()));
//                    }
//                    redisValue.put(serializer.serialize("topic"), serializer
//                            .serialize(kafkaConsumerOffset.getTopic()));
//                    redisValue.put(serializer.serialize("partition"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getPartition().toString()));
//                    redisValue.put(serializer.serialize("consumer_group"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getConsumer_group()));
//                    redisValue.put(serializer.serialize("offset"), serializer
//                            .serialize(kafkaConsumerOffset.getOffset()
//                                    .toString()));
//                    redisValue.put(serializer.serialize("last_flush_offset"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getLast_flush_offset().toString()));
//                    redisValue.put(serializer.serialize("kafka_cluster_name"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getKafka_cluster_name()));
//                    redisValue.put(serializer.serialize("owner"), serializer
//                            .serialize(kafkaConsumerOffset.getOwner()));
//                    redisValue.put(serializer.serialize("update_time"),
//                            serializer.serialize(Long
//                                    .toString(kafkaConsumerOffset
//                                            .getUpdate_time().getTime())));
//                    redisValue.put(serializer.serialize("create_time"),
//                            serializer.serialize(Long
//                                    .toString(kafkaConsumerOffset
//                                            .getCreate_time().getTime())));
//                    redisConnection.hMSet(redisKey, redisValue);
//                    return true;
//                } catch (Exception e) {
//                    logger.error("write kafkaConsumerOffset"
//                            + kafkaConsumerOffset.toString()
//                            + " to redis error, the error is "
//                            + CommonUtils.getStackTraceAsString(e));
//                    return false;
//                }
//
//            }
//        });
//    }
//
//    // 去掉synchronized,因为MysqlOffsetPersist的flush和persist里有synchronized方法
//    @Override
//    public Boolean saveOffsetInBackupExternalStore(
//            KafkaConsumerOffset kafkaConsumerOffset) {
//        Long lag = kafkaConsumerOffset.getOffset()
//                - kafkaConsumerOffset.getLast_flush_offset();
//        if (!lag.equals(0L)) {
//            logger.debug("because of the muti-thread, the value is not exactly right, the lag is "
//                    + lag);
//            return saveOffset(kafkaConsumerOffset);
//        }
//        return true;
//    }
//
//    @Override
//    public KafkaConsumerOffset readOffsetFromBackupExternalStore(String topic,
//                                                                 int partition) {
//        KafkaConsumerOffset kafkaConsumerOffsetFromBackupExternalStore = readOffset(
//                topic, partition);
//        return kafkaConsumerOffsetFromBackupExternalStore;
//    }
//
//    // @Override
//    // public synchronized Boolean clearOffsetFromBackupExternalStore(
//    // String topic, int partition) {
//    // return clearOffset(topic, partition);
//    // }
//
//    @Override
//    public KafkaConsumerOffset executeWhenReadNullFromBackupExternalStore(
//            String topic, Integer partition) {
//        // KafkaConsumerOffset kafkaConsumerOffsetFromBackupExternalStore =
//        // null;
//        // try {
//        // kafkaConsumerOffsetFromBackupExternalStore = (KafkaConsumerOffset)
//        // retryerWithResultNull
//        // .call(new Callable() {
//        // @Override
//        // public Object call() throws Exception {
//        // return readOffset(topic, partition);
//        // }
//        // });
//        // } catch (ExecutionException | RetryException e) {
//        // logger.error("retry to read kafkaConsumerOffset from redis error, the error is "
//        // + CommonUtils.getStackTraceAsString(e));
//        // }
//        // return kafkaConsumerOffsetFromBackupExternalStore;
//        logger.error("can not read offset from redis! exit the process!");
//        stopEtlWithExceptionFlag = true;
//        try {
//            Thread.sleep(100000);
//        } catch (InterruptedException e) {
//            logger.error("------- thread can not sleep ---------------------"
//                    + e.toString());
//        }
//        return null;
//    }
//
//    @Override
//    public KafkaConsumerOffset executeWhenReadNullFromMysql(String topic,
//                                                            Integer partition) {
//        // KafkaConsumerOffset kafkaConsumerOffset = null;
//        // try {
//        // kafkaConsumerOffset = (KafkaConsumerOffset) retryerWithResultNull
//        // .call(new Callable() {
//        // @Override
//        // public Object call() throws Exception {
//        // return MysqlOffsetManager.getInstance()
//        // .readOffsetFromMysql(topic, partition);
//        // }
//        // });
//        // if (kafkaConsumerOffset == null) {
//        // logger.error("the kafkaConsumerOffset read from mysql is null , the topic is "
//        // + topic
//        // + "the partition is "
//        // + partition
//        // + "exit the process unclear!");
//        // System.exit(-1);
//        // }
//        // } catch (ExecutionException | RetryException e) {
//        // logger.error("the kafkaConsumerOffset read from mysql is null , the topic is "
//        // + topic
//        // + "the partition is "
//        // + partition
//        // + "exit the process unclear! the error is "
//        // + CommonUtils.getStackTraceAsString(e));
//        // System.exit(-1);
//        // return null;
//        // }
//        // return kafkaConsumerOffset;
//        logger.error("can not read offset from mysql! exit the process!");
//        stopEtlWithExceptionFlag = true;
//        try {
//            Thread.sleep(100000);
//        } catch (InterruptedException e) {
//            logger.error("------- thread can not sleep ---------------------"
//                    + e.toString());
//        }
//        return null;
//    }
//
//    // @Override
//    // public Boolean executeWhenNotClearExternalStore(final String topic,
//    // final Integer partition) {
//    // Boolean flag = false;
//    // try {
//    // flag = (Boolean) retryerWithResultFails.call(new Callable() {
//    // @Override
//    // public Object call() throws Exception {
//    // return clearOffsetFromBackupExternalStore(topic, partition);
//    // }
//    // });
//    // if (!flag) {
//    // logger.error("retry to clear kafkaConsumerOffset from backup external store error!");
//    // }
//    // } catch (ExecutionException | RetryException e) {
//    // logger.error("retry to clear kafkaConsumerOffset from backup external store error, the error is "
//    // + CommonUtils.getStackTraceAsString(e));
//    // return false;
//    // }
//    // return flag;
//    // }
//
//    @Override
//    public Boolean executeWhenSaveOffsetFailInMysqlAndExternalStore(
//            final KafkaConsumerOffset kafkaConsumerOffset) {
//        logger.error("save offset fail in mysql and redis! retry!");
//        Boolean flag = false;
//        try {
//            flag = (Boolean) retryerWithResultFails.call(new Callable() {
//                @Override
//                public Object call() throws Exception {
//                    return MysqlOffsetPersist.getInstance().saveOffset(
//                            kafkaConsumerOffset);
//                }
//            });
//            if (!flag) {
//                logger.error("save offset fail in mysql and redis! exit the process unclear!");
//                stopEtlWithExceptionFlag = true;
//                try {
//                    Thread.sleep(100000);
//                } catch (InterruptedException e) {
//                    logger.error("------- thread can not sleep ---------------------"
//                            + e.toString());
//                }
//                return null;
//            }
//        } catch (ExecutionException | RetryException e) {
//            logger.error("save offset fail in mysql and redis! exit the process unclear! the error is "
//                    + CommonUtils.getStackTraceAsString(e));
//            stopEtlWithExceptionFlag = true;
//            try {
//                Thread.sleep(100000);
//            } catch (InterruptedException e2) {
//                logger.error("------- thread can not sleep ---------------------"
//                        + e2.toString());
//            }
//            return null;
//        }
//        return flag;
//    }
//
//    @Override
//    public Boolean backupStoreStateCheck() {
//        try {
//            return redisKafkaTemplate.execute(new RedisCallback() {
//                @Override
//                public Boolean doInRedis(RedisConnection redisConnection) {
//                    try {
//                        Boolean closed = redisConnection.isClosed();
//                        if (!closed) {
//                            logger.info("redis reconnected!");
//                        } else {
//                            logger.info("redis session closed!");
//                        }
//                        return !closed;
//                    } catch (Exception e) {
//                        logger.info("redis connect error, the error is " + e);
//                        return false;
//                    }
//                }
//            });
//
//        } catch (Exception e) {
//            logger.error("redis connect error, the error is " + e);
//            return false;
//        }
//
//    }
//
//    @Override
//    public Boolean updateOwner(KafkaConsumerOffset kafkaConsumerOffset) {
//        Date now = new Date();
//        if (kafkaConsumerOffset.getOffset() == 0L) {
//            kafkaConsumerOffset.setUpdate_time(now);
//            if (kafkaConsumerOffset.getCreate_time() == null) {
//                kafkaConsumerOffset.setCreate_time(now);
//            }
//        }
//        return updateOwnerInRedis(kafkaConsumerOffset);
//    }
//
//    private Boolean updateOwnerInRedis(KafkaConsumerOffset kafkaConsumerOffset) {
//        try {
//            return redisKafkaTemplate.execute(new RedisCallback() {
//                @Override
//                public Boolean doInRedis(RedisConnection redisConnection) {
//
//                    if (kafkaConsumerOffset == null
//                            || kafkaConsumerOffset.isNull()) {
//                        logger.error("save offset fail in redis! kafkaConsumerOffset is "
//                                + kafkaConsumerOffset);
//                        return true;
//                    }
//                    RedisSerializer serializer = redisKafkaTemplate
//                            .getStringSerializer();
//                    String redisKeystr = kafkaConsumerOffset
//                            .getKafka_cluster_name()
//                            + "-"
//                            + kafkaConsumerOffset.getTopic()
//                            + "-"
//                            + kafkaConsumerOffset.getPartition()
//                            + "-"
//                            + kafkaConsumerOffset.getConsumer_group();
//                    byte[] redisKey = serializer.serialize(redisKeystr);
//                    Map redisValue = new HashMap();
//                    if (kafkaConsumerOffset.getOid() != null) {
//                        redisValue.put(serializer.serialize("oid"), serializer
//                                .serialize(kafkaConsumerOffset.getOid()
//                                        .toString()));
//                    }
//                    redisValue.put(serializer.serialize("topic"), serializer
//                            .serialize(kafkaConsumerOffset.getTopic()));
//                    redisValue.put(serializer.serialize("partition"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getPartition().toString()));
//                    redisValue.put(serializer.serialize("consumer_group"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getConsumer_group()));
//                    redisValue.put(serializer.serialize("offset"), serializer
//                            .serialize(kafkaConsumerOffset.getOffset()
//                                    .toString()));
//                    redisValue.put(serializer.serialize("last_flush_offset"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getLast_flush_offset().toString()));
//                    redisValue.put(serializer.serialize("kafka_cluster_name"),
//                            serializer.serialize(kafkaConsumerOffset
//                                    .getKafka_cluster_name()));
//                    redisValue.put(serializer.serialize("owner"), serializer
//                            .serialize(kafkaConsumerOffset.getOwner()));
//                    redisValue.put(serializer.serialize("update_time"),
//                            serializer.serialize(Long
//                                    .toString(kafkaConsumerOffset
//                                            .getUpdate_time().getTime())));
//                    redisValue.put(serializer.serialize("create_time"),
//                            serializer.serialize(Long
//                                    .toString(kafkaConsumerOffset
//                                            .getCreate_time().getTime())));
//                    redisConnection.hMSet(redisKey, redisValue);
//                    return true;
//
//
//                }
//            });
//        } catch (Exception e) {
//            logger.error("updateOwner in redis error, the error is " + CommonUtils.getStackTraceAsString(e));
//            return false;
//        }
//    }
//
//    @Override
//    public void executeWhenSessionTimeout(Integer count) {
//        logger.error("session will time out! the count is " + count
//                + ", the session time out is "
//                + KafkaMysqlOffsetParameter.sessionTimeout + ",exit unclear!");
//        stopEtlWithExceptionFlag = true;
//        try {
//            Thread.sleep(100000);
//        } catch (InterruptedException e) {
//            logger.error("------- thread can not sleep ---------------------"
//                    + e.toString());
//        }
//    }
//
//    @Override
//    public void executeWhenExecuteDataSessionTimeout(KafkaSubscribeConsumeThread kafkaSubscribeConsumeThread) {
//        logger.error("session time out!" + ", the session time out is "
//                + KafkaMysqlOffsetParameter.sessionTimeout);
//        restartKafkaConsumerFlag = true;
//    }
//
//    @Override
//    public void executeWhenOffsetReset() {
//        logger.error("kafka consumer offset has no such offset!");
//        try {
//            if(lastMailForOffsetReset == null || (lastMailForOffsetReset != null && lastMailForOffsetReset.plusMinutes(3).isBeforeNow())){
//                Do_ta_company_info companyInfo = mapperTaMysql.getCompanyInfo();
//                String mailContent = "公司名称:" + companyInfo.getCompany_name() + "
kafka Offset reset"; // taCenteredAlertSendService.alertByMail("[email protected]",null,"etl因为kafka的offset的reset而暂停60秒",mailContent); // lastMailForOffsetReset = new DateTime(); // } // Thread.sleep(3000); // } catch (Exception e) { // logger.error("send mail to [email protected], " + Throwables.getStackTraceAsString(e)); // } // } // // @Override // public void executeWhenException() { // logger.error("kafka consumer offset reset, exit unclear"); // try { // Do_ta_company_info companyInfo = mapperTaMysql.getCompanyInfo(); // String mailContent = "公司名称:" + companyInfo.getCompany_name() + "
kafka读取异常,请人工介入"; // taCenteredAlertSendService.alertByMail("[email protected]",null,"etl因为kafka的offset异常退出",mailContent); // } catch (Exception e) { // logger.error("send mail to [email protected], " + Throwables.getStackTraceAsString(e)); // } // // do not let monitor restart //// try { //// setKeyVal(TaConstants.ETL_RESET_MARK, "1"); //// } catch (ExecutionException | RetryException e) { //// logger.error("set etl reset mark error, " + e.toString()); //// } // stopEtlWithExceptionFlag = true; // try { // Thread.sleep(80000); // } catch (InterruptedException e) { // logger.error("------- thread can not sleep ---------------------" + e.toString()); // } // } // //// public Object setKeyVal(String key, String value) throws ExecutionException, RetryException { //// return retryer.call(new Callable() { //// @Override //// public Boolean call() throws Exception { //// return redisKafkaTemplate.execute((RedisCallback) redisConnection -> { //// RedisSerializer serializer = redisKafkaTemplate.getStringSerializer(); //// return redisConnection.set(serializer.serialize(key), serializer.serialize(value)); //// }); //// } //// }); //// } // // //} // // //




© 2015 - 2025 Weber Informatics LLC | Privacy Policy