zoukankan      html  css  js  c++  java
  • Kafka示例一则及问题排除

    在Linux上安装Zookeeper及Kafka

    1.安装Zookeeper后,在其配置文件zoo.cfg中添加:

    dataLogDir=******************

    然后运行命令:zkServer.sh start 启动Zookeeper。

    2.安装Kafka

    安装Kafka后,运行命令:./bin/kafka-server-start.sh ./config/server.properties,命令启动kafka.

    3.生产者代码:

    首先引入Kafka的client jar包

     <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>0.11.0.1</version>
            </dependency>
    public class Producer {
        // Topic
        private static final String topic = "kafkaTopic1";
    
        public static void aaa() {
    
            Properties props = new Properties();
    
            props.put("bootstrap.servers", "192.168.102.128:9092");
            props.put("acks", "0");
            props.put("group.id", "1111");
            props.put("retries", "0");
            props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
            props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    
            //生产者实例
            KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props);
    
            int i = 1;
            // 发送消息
            while (true) {
                System.out.println("--------------生产开始:--------------");
                producer.send(new ProducerRecord<String, String>(topic, "key:" + i, "value:" + i));
                System.out.println("key:" + i + " " + "value:" + i);
                i++;
                if (i >= 10) {
                    break;
                }
            }
        }
    }

    4.引入消费者代码:

    public class Consumer {
        private static final String topic = "kafkaTopic1";
    
        public static void aaaa() {
    
            Properties props = new Properties();
            props.put("bootstrap.servers", "192.168.102.128:9092");
            props.put("group.id", "1111");
            props.put("enable.auto.commit", "true");
            props.put("auto.commit.interval.ms", "1000");
            props.put("auto.offset.reset", "earliest");
    
            props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
            props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    
            KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
    
            consumer.subscribe(Arrays.asList(topic));
    
            while (true) {
                ConsumerRecords<String, String> records = consumer.poll(1000);
                for (ConsumerRecord<String, String> record : records) {
                    System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
                    //i++;
                }
            }
        }
    }

    5.运行:

    运行生产者代码,将数据推入kafka,然后运行消费者代码,发现系统运行到:

    ConsumerRecords<String, String> records = consumer.poll(1000);

    系统卡住不动,后台报错:

    Marking the coordinator linux-kafka:9092 (id: 2147483647 rack: null) dead for group 1111

    经过网上查询,发现是Kafka配置文件中没有配置监听端口所致,在配置文件中添加:

    listeners=PLAINTEXT://IP:9092

    保存后,重启Kafka及生产者、消费者代码,一切正常,消费端运行结果如下:

  • 相关阅读:
    数据库课程设计
    VB.NET 数组的定义 动态使用 多维数组
    Hadoop学习之配置Eclipse远程调试Hadoop
    2014阿里巴巴研发project师暑期实习生面试经验
    SD卡中FAT32文件格式高速入门(图文具体介绍)
    Java抓取网页数据(原网页+Javascript返回数据)
    WPF中的CheckBox的_ (underscore / 下划线)丢失
    初识EPC
    SharePoint 2013 中代码创建列表查阅项字段
    代码编写逻辑(先伪代码,再带方法的逻辑,最后实现具体方法)(先控制器,再模型)
  • 原文地址:https://www.cnblogs.com/jizhong/p/13306750.html
Copyright © 2011-2022 走看看