59-天亮大数据经典大数据笔试题系列之Kafka工具类之Java实现

  • 工具类意义描述
    • kafka是最典型、最常用的MQ技术之一,逐渐发展成为各种生产者消费者组件解耦的中间件。
  • 代码实现
  • 生产者工具类
package com.tl.job002.kafka;
import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
importorg.apache.kafka.common.serialization.StringSerializer;
/**
 * kafka测试工具类
 * @author tianliang
 */
public class KafkaProducerUtil {
   // 生产者抽象对象
   public KafkaProducer producer;
   // 传入brokerList,以hostname:port的方式,多个之间用,号隔开
   public KafkaProducerUtil(String brokerList) {
      Properties props = new Properties();
      // 服务器ip:端口号,集群用逗号分隔
      props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList);
      // key序列化指定类
      props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
           StringSerializer.class.getName());
      // value序列化指定类
      props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
           StringSerializer.class.getName());
      // 生产者对象
      producer = new KafkaProducer(props);
   }
   
   public void close(){
      this.producer.close();
   }
   public static void main(String[] args) {
      // 初始化broker列表
      String brokerList = "sc-slave7:6667,sc-slave8:6667";
      String topic="TestKafka";
      // 初始化生产者工具类
      KafkaProducerUtil kafkaProducerUtil = new KafkaProducerUtil(brokerList);
      // 向test_topic发送hello, kafka
      kafkaProducerUtil.producer.send(new ProducerRecord(
           topic, "hello,天亮教育!"));
      kafkaProducerUtil.close();
      
      System.out.println("done!");
   }
}
  • 消费者工具类
package com.tl.job002.kafka;
import java.util.Arrays;
import java.util.Properties;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
importorg.apache.kafka.common.serialization.StringDeserializer;
/**
 * Kafka消费者工具类
 *
 * @author tianliang
 */
public class KafkaConsumerUtil {
   // 消费者对象
   public KafkaConsumer kafkaConsumer;
   public KafkaConsumerUtil(String brokerList, String topic) {
      Properties props = new Properties();
      // 服务器ip:端口号,集群用逗号分隔
      props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList);
      // props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "sc-slave1:2181");
      // 消费者指定组,名称可以随意,注意相同消费组中的消费者只能对同一个分区消费一次
      props.put(ConsumerConfig.GROUP_ID_CONFIG, "TestTL");
      // 是否启用自动提交,默认true
      props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);
      // 自动提交间隔时间1s
      props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, 1000);
      // key反序列化指定类
      props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
           StringDeserializer.class.getName());
      // value反序列化指定类,注意生产者与消费者要保持一致,否则解析出问题
      props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
           StringDeserializer.class.getName());
      // 消费者对象
      kafkaConsumer = new KafkaConsumer<>(props);
      kafkaConsumer.subscribe(Arrays.asList(topic));
   }
   public void close() {
      kafkaConsumer.close();
   }
   public static void main(String[] args) {
      // 初始化broker列表
      String brokerList = "sc-slave7:6667,sc-slave8:6667";
      String topic = "TestKafka";
      // 初始化生产者工具类
      KafkaConsumerUtil kafkaConsumerUtil = new KafkaConsumerUtil(brokerList,
           topic);
      
      boolean runnable=true;
      while (runnable) {
        ConsumerRecords records = kafkaConsumerUtil.kafkaConsumer
              .poll(100);
        for (ConsumerRecord record : records) {
           System.out.printf("offset = %d, value = %s", record.offset(),
                 record.value());
           System.out.println();
        }
      }
      
      kafkaConsumerUtil.close();
      System.out.println("done!");
   }
}


天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造IT职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。

更多学习讨论, 请加入
官方-天亮大数据交流QQ群-366784928
群二维码:
59-天亮大数据经典大数据笔试题系列之Kafka工具类之Java实现_第1张图片
官方-天亮web前端交流QQ群-972788995
群二维码:
59-天亮大数据经典大数据笔试题系列之Kafka工具类之Java实现_第2张图片

欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
59-天亮大数据经典大数据笔试题系列之Kafka工具类之Java实现_第3张图片

爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://myhope365.com/news/index?id=66
天亮云课堂小程序版,微信扫码下图可直接进入学习!!!

59-天亮大数据经典大数据笔试题系列之Kafka工具类之Java实现_第4张图片

你可能感兴趣的:(天亮教育相关课程,天亮大数据,天亮教育,天亮培训)