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>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.10.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>0.10.0.0</version>
        </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<String,String> consumer =new KafkaConsumer<String, String>(props);
        //配置topic
        consumer.subscribe(Arrays.asList("test"));
        while (true) {
            //这里是得到ConsumerRecords实例
            ConsumerRecords<String, String> records = consumer.poll(100);
            for (ConsumerRecord<String, String> 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<String, String> producer = new KafkaProducer<String, String>(prop);
        for (int i = 0; i < 100; i++) {
            //这个send 没有什么变化
            producer.send(new ProducerRecord<String, String>("test", Integer.toString(i), Integer.toString(i)));

        }

        producer.close();


    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值