java程序到kafka_Java代码中Kafka的使用

该博客介绍了如何使用Kafka的Java客户端创建消费者并进行数据收集。`KafkaClient`类创建了消费者连接,并设置了Zookeeper连接、组ID等配置。`KafkaDataCollect`类展示了数据收集过程,包括从指定主题读取消息,使用Gson库解析JSON数据,并将数据存储到Redis队列。此外,还实现了时间戳尺度来限制每日更新量,并在特定时间间隔发送提醒。
摘要由CSDN通过智能技术生成

kafka的客户端,建立消费者public class KafkaClient {    public static ConsumerConnector createConsumer() {

Properties consumerProducer = new Properties();

consumerProducer.put("zookeeper.connect", "ip:port");

consumerProducer.put("group.id", "group-1");

consumerProducer.put("serializer.class", "kafka.serializer.StringEncoder");

consumerProducer .put("auto.offset.reset", "smallest");

ConsumerConfig config = new ConsumerConfig(consumerProducer);

ConsumerConnector consumer = Consumer.createJavaConsumerConnector(config);        return consumer;

}    public static class ConsumerTest extends Thread {

AtomicBoolean start = new AtomicBoolean(true);

CountDownLatch c;        private String topic;

ConsumerConnector consumer;        public ConsumerTest(String topic, ConsumerConnector consumer) {            this.consumer = consumer;            this.topic = topic;

}        public void run() {

Map topicCountMap = new HashMap();

topicCountMap.put(topic, 1);

Map>> createMessageStreams = consumer.createMessageStreams(topicCountMap);

KafkaStream stream = createMessageStreams.get(topic).get(0);// 获取每次接收到的这个数据

ConsumerIterator iterator = stream.iterator();            while (iterator.hasNext()) {

String j = new String(iterator.next().message());

System.out.println(j);

}

}

}    public static void main(String[] args) throws InterruptedException {

ConsumerConnector c = KafkaClient.createConsumer();

ConsumerTest t = new ConsumerTest("topic_sname", c);

t.start();

Thread.sleep(1000 * 60 * 10);

t.interrupt();

c.shutdown();

}

}

kafka数据收集public class KafkaDataCollect {    static Logger LOG = Logger.getLogger(KafkaDataCollect.class);

ConsumerConnector consumer = KafkaClient.createConsumer();    //尺度时间戳 用于限定每日更新量

private long ruler = 0;

KafkaDataCollect(){        //初始化尺度时间戳

ruler = getRuler();

}    public long getRuler(){        long current = System.currentTimeMillis();

String date = new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(current));

date = date + " 00:00:00";        long rulertime = 0;

try {

rulertime = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(date).getTime();

} catch (ParseException e) {            // TODO Auto-generated catch block

e.printStackTrace();

}        return rulertime;

}

public void dataStreamIn(String topic) {

Map topicCountMap = new HashMap();

topicCountMap.put(topic, 1);

Map>> createMessageStreams = consumer.createMessageStreams(topicCountMap);

KafkaStream stream = createMessageStreams.get(topic).get(0);// 获取每次接收到的这个数据

int articleCount = 0;

ConsumerIterator iterator = stream.iterator();

Jedis jedis = new Jedis(ip, 6379);        try {            while (iterator.hasNext()) {

String msgStr = "";                if((System.currentTimeMillis() - ruler) >= 24 * 60 * 60 * 1000)

{

String date = new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(ruler));

msgStr = date + "Kafka data stream collected "+ articleCount+ " articles.";

LOG.info(msgStr);

articleCount = 0;

ruler = ruler + 24 * 60 * 60 * 1000;

}                if((System.currentTimeMillis() - ruler) >= 8 * 60 * 60 * 1000)

{

SendMessage.send("17865153777", msgStr, null, null, null);

msgStr = "";

}

String j = new String(iterator.next().message());

Gson gson = new Gson();

JsonFromKafkaData jsonD = gson.fromJson(j, new TypeToken() {

}.getType());                try {

LOG.info(j);                    if(jsonD.getSimId()!=null && !jsonD.getSimId().contains("_"))

jsonD.setSimId("clusterId_"+jsonD.getSimId());

jedis.lpush("kafka-queue", gson.toJson(jsonD));

articleCount++;

} catch (Exception e) {                    // TODO: handle exception

LOG.error("Input newData into queue.", e);

}

}

} catch (Exception e) {

jedis.close();

SendMessage.send("178xxxxxxxx", "Kafka data collection process stoped.", null, null, null);            // TODO: handle exception

e.printStackTrace();

}

}

public static void main(String[] args) {

KafkaDataCollect kafkaStream = new KafkaDataCollect();

kafkaStream.dataStreamIn("topic_name");

}

}

作者:牛粪

链接:https://www.jianshu.com/p/a564932d91aa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值