package com.sf.next.sfpay.core.kafka.producer;
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sf.kafka.api.produce.IKafkaProducer;
import com.sf.kafka.api.produce.ProduceConfig;
import com.sf.kafka.api.produce.ProducerPool;
import com.sf.next.sfpay.log.manager.ExpLogManager;
import com.sf.pay.cache.redis.RedisDbCfgUtil;
import com.sf.next.sfpay.message.code.ErrorMessage;
@Component
public class SFPayMonitorProducer {
@Autowired
private RedisDbCfgUtil redisDbCfgUtil;
@Autowired
private ExpLogManager expLogServiceImpl;
// 日志
private static final Logger logger = Logger.getLogger(SFPayMonitorProducer.class);
private IKafkaProducer kafkaProducer = null;
private String topicKafka; // 主题名称
private String poolSizeStr;
private String kafkaUrl; // KAFKA连接地址
private String clusterName;// 主题所在的集群名称
private String topicTokens;// 主题名称+分隔符 (固定不变)+主题的校验码
@PostConstruct
public void init() {
try {
topicKafka = redisDbCfgUtil.getSysCfgValueStr("MONITOR_topicKafka", "");
logger.debug("===============================topicKafka===============================");
logger.debug(topicKafka);
poolSizeStr = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafka_poolSizeStr", "");
logger.debug("===============================poolSizeStr===============================");
logger.debug(poolSizeStr);
kafkaUrl = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafkaUrl", "");
logger.debug("===============================kafkaUrl===============================");
logger.debug(kafkaUrl);
clusterName = redisDbCfgUtil.getSysCfgValueStr("MONITOR_clusterName", "");
logger.debug("===============================clusterName===============================");
logger.debug(clusterName);
topicTokens = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafka_topicTokens", "");
logger.debug("===============================topicTokens===============================");
logger.debug(topicTokens);
int poolSize = 10;
if (!"".equals(poolSizeStr) && poolSizeStr != null) {
poolSize = Integer.parseInt(poolSizeStr);
}
ProduceConfig produceConfig = new ProduceConfig(poolSize, kafkaUrl,
clusterName, topicTokens);
if (!StringUtils.isEmpty(kafkaUrl)) {
kafkaProducer = new ProducerPool(produceConfig);
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_INIT + e);
expLogServiceImpl.saveExpLog("2056", "2056", ErrorMessage.SFPAY_KAFKA_INIT + e, "");
}
}
public String kafkaProductMonitor(String jsonStr) {
// 写入kafka
try {
if (kafkaProducer != null){
kafkaProducer.sendString(topicKafka, jsonStr);
logger.info("写入kafka");
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_SEND + e);
expLogServiceImpl.saveExpLog("2054", "2054", ErrorMessage.SFPAY_KAFKA_SEND + e, "");
return "error2054";
}
return "OK";
}
/**
* 描述:批量调用kafka
* 2017年4月7日
* @param jsonList
* @return
* String
*/
public String batchkafkaProductMonitor(List<String> jsonList){
try {
if (kafkaProducer != null)
{
kafkaProducer.batchSendString(topicKafka, jsonList);
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_SENDALL + e);
expLogServiceImpl.saveExpLog("2055", "2055", ErrorMessage.SFPAY_KAFKA_SENDALL + e, "");
return "error2054";
}
return "OK";
}
}
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sf.kafka.api.produce.IKafkaProducer;
import com.sf.kafka.api.produce.ProduceConfig;
import com.sf.kafka.api.produce.ProducerPool;
import com.sf.next.sfpay.log.manager.ExpLogManager;
import com.sf.pay.cache.redis.RedisDbCfgUtil;
import com.sf.next.sfpay.message.code.ErrorMessage;
@Component
public class SFPayMonitorProducer {
@Autowired
private RedisDbCfgUtil redisDbCfgUtil;
@Autowired
private ExpLogManager expLogServiceImpl;
// 日志
private static final Logger logger = Logger.getLogger(SFPayMonitorProducer.class);
private IKafkaProducer kafkaProducer = null;
private String topicKafka; // 主题名称
private String poolSizeStr;
private String kafkaUrl; // KAFKA连接地址
private String clusterName;// 主题所在的集群名称
private String topicTokens;// 主题名称+分隔符 (固定不变)+主题的校验码
@PostConstruct
public void init() {
try {
topicKafka = redisDbCfgUtil.getSysCfgValueStr("MONITOR_topicKafka", "");
logger.debug("===============================topicKafka===============================");
logger.debug(topicKafka);
poolSizeStr = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafka_poolSizeStr", "");
logger.debug("===============================poolSizeStr===============================");
logger.debug(poolSizeStr);
kafkaUrl = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafkaUrl", "");
logger.debug("===============================kafkaUrl===============================");
logger.debug(kafkaUrl);
clusterName = redisDbCfgUtil.getSysCfgValueStr("MONITOR_clusterName", "");
logger.debug("===============================clusterName===============================");
logger.debug(clusterName);
topicTokens = redisDbCfgUtil.getSysCfgValueStr("MONITOR_kafka_topicTokens", "");
logger.debug("===============================topicTokens===============================");
logger.debug(topicTokens);
int poolSize = 10;
if (!"".equals(poolSizeStr) && poolSizeStr != null) {
poolSize = Integer.parseInt(poolSizeStr);
}
ProduceConfig produceConfig = new ProduceConfig(poolSize, kafkaUrl,
clusterName, topicTokens);
if (!StringUtils.isEmpty(kafkaUrl)) {
kafkaProducer = new ProducerPool(produceConfig);
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_INIT + e);
expLogServiceImpl.saveExpLog("2056", "2056", ErrorMessage.SFPAY_KAFKA_INIT + e, "");
}
}
public String kafkaProductMonitor(String jsonStr) {
// 写入kafka
try {
if (kafkaProducer != null){
kafkaProducer.sendString(topicKafka, jsonStr);
logger.info("写入kafka");
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_SEND + e);
expLogServiceImpl.saveExpLog("2054", "2054", ErrorMessage.SFPAY_KAFKA_SEND + e, "");
return "error2054";
}
return "OK";
}
/**
* 描述:批量调用kafka
* 2017年4月7日
* @param jsonList
* @return
* String
*/
public String batchkafkaProductMonitor(List<String> jsonList){
try {
if (kafkaProducer != null)
{
kafkaProducer.batchSendString(topicKafka, jsonList);
}
} catch (Exception e) {
logger.error(ErrorMessage.MAIN_MESSAGE);
logger.error(ErrorMessage.SFPAY_KAFKA_SENDALL + e);
expLogServiceImpl.saveExpLog("2055", "2055", ErrorMessage.SFPAY_KAFKA_SENDALL + e, "");
return "error2054";
}
return "OK";
}
}