• kafka简单使用


    kafka的API基本上上就是消费者和生产者,可以使用不同语言操作这些API,也有很多组件,框架可以作为kafka的生产者或消费者,下面简单介绍几种

    1、java

    生产者
    public class KafkaProducer {
    
    public static void main(String[] args) throws IOException, InterruptedException {
        String topic = "topic_test";
        Properties props = new Properties();
        props.setProperty("bootstrap.servers", "node1:9092,node2:9092,node3:9092");
        props.setProperty("key.serializer", StringSerializer.class.getName());
        props.setProperty("value.serializer", StringSerializer.class.getName());
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
    
        while(true) {
            String value = "";
            ......
            Thread.sleep(1000L);
            System.out.println(topic);
            producer.send(new ProducerRecord<>(topic, value));
            System.out.println(value);
        }
        producer.close();
    }
    
    
    消费者
    public class KafkaProducer {
    
    public static void main(String[] args) throws IOException, InterruptedException {
        String topic = "topic_test";
        Properties props = new Properties();
        props.put("bootstrap.servers", servers);
        props.put("group.id", groupId);
        props.put("enable.auto.commit", "true");
        props.put("auto.commit.interval.ms", "1000");
        props.put("session.timeout.ms", "30000");
        props.put("auto.offset.reset", "earliest");
        props.put("key.deserializer", StringDeserializer.class.getName());
        props.put("value.deserializer", StringDeserializer.class.getName());
        
        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
        String topic = "topic_test";
        consumer.subscribe(Arrays.asList(topic));
        
        
        try {
             while(true) {
            ConsumerRecords<String, String> msgList = consumer.poll(1000);
                if(null != msgList && msgList.count() > 0){
                    for (ConsumerRecord<String, String> record : msgList) {
                        System.out.println("=======receive: key = " + record.key() + ", value = " + record.value()+" offset==="+record.offset());
                    }
                } else {
                    Thread.sleep(1000);
                }
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            consumer.close();
        }
    
    }
     

    python,scala等其他语言也可以,有对应的API

    一些组件如:flume,可以消费kafka的数据也可以作为生产端,filebeat也可以,这是采集类的 。

    计算组件的如,presto有connect操作kafka的数据,sparkStreaming流计算,消费kafka,flink有kafka的souce和sink,之后补充

  • 相关阅读:
    JQuery实现数组移除指定元素
    美团酒旅面经
    搜狗一面
    360面经
    头条面经
    搜狐笔试题
    kolakoski序列
    函数的节流
    隐藏元素的几种方法
    移动端适配与响应式布局
  • 原文地址:https://www.cnblogs.com/lrxvx/p/13549426.html
Copyright © 2020-2023  润新知