kafka 0.10.0.0 java-api使用

在kafka中 0.10.0.0较以前的变化比较大,开始我学习之旅,本篇目介绍的主要是入门kafka
0.10.0.0后续会持续更新一些相关的kafka使用笔记。 先从环境上说,配置集群版本,版本centos7.3,kafka 0.10.0.0 ,zookeeper 3.4.9 下载地址:http://archive.apache.org/dist/ 在里面查找关于的kafka和zk的组件 集群搭建可以关注其他博客,贴出主要的内容
zk就不多说了,主要是能够ping通,然后myid的设置,分发,zk启动,安装简单,但是也有很多小细节。
kafka的安装其实也很简单,zkconnet 集群的zk依赖,其他的brokerid不能一样,因为在zkCli.sh
里能查看元数据,位置放在 ls /brokers/ids 下 基础环境搭建好了,开始关于0.10.0.0的api使用笔记。

pom.xml 注意这里,毕竟环境依赖错了,基本GG

<dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>

        <dependency>
            <groupId>org.apache.kafkagroupId>
            <artifactId>kafka-clientsartifactId>
            <version>0.10.0.0version>
        dependency>

        <dependency>
            <groupId>org.apache.kafkagroupId>
            <artifactId>kafka_2.11artifactId>
            <version>0.10.0.0version>
        dependency>
    dependencies>

Kafka_Consumer.java

import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.util.Arrays;
import java.util.Properties;

public class Kafka_Consumer {

    public static void main(String [] args){
        //这个是用来配置kafka的参数
        Properties props=new Properties();
        //这里不是配置zookeeper了,这个是配置bootstrap.servers
        props.put("bootstrap.servers","cdh1:9092,cdh2:9092,cdh3:9092");
        //这个配置组,之前我记得好像不配置可以,现在如果不配置那么不能运行
        props.put("group.id","test");
        //序列化
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        Consumer consumer =new KafkaConsumer(props);
        //配置topic
        consumer.subscribe(Arrays.asList("test"));
        while (true) {
            //这里是得到ConsumerRecords实例
            ConsumerRecords records = consumer.poll(100);
            for (ConsumerRecord record : records) {
                //这个有点好,可以直接通过record.offset()得到offset的值
                System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
            }
        }
    }
}

Kafka_Producer.java


import org.apache.kafka.clients.producer.*;

import java.util.Properties;

public class Kafka_Producer extends Thread {



    public static void main(String[] args) {
        //这个是用来配置kafka的参数
        Properties prop = new Properties();
        //这里不是配置broker.id了,这个是配置bootstrap.servers
        prop.put("bootstrap.servers", "cdh1:9092,cdh2:9092,cdh3:9092");
        //下面是分别配置 key和value的序列化
        prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        //这个地方和1.0X之前的版本有不一样的,这个是使用kafkaproducer 类来实例化
        Producer producer = new KafkaProducer(prop);
        for (int i = 0; i < 100; i++) {
            //这个send 没有什么变化
            producer.send(new ProducerRecord("test", Integer.toString(i), Integer.toString(i)));

        }

        producer.close();


    }
}

在使用kafka api 的时候,这些代码已经实现,但是无论怎么跑程序都无法进行交互,就是没有数据的实现,在消费端看不到消费的数据,在shell端也没有。这个问题的主要解决思路是,将hosts文件进行映射关系,也就是,映射ip和名字,然后映射后的ip(别名):9092(端口视情况,默认的broker为9092),然后进行交互看是否有问题,一般这样就能解决问题。

你可能感兴趣的:(kafaka)