设为首页 加入收藏

TOP

Kafka使用Java客户端进行访问
2018-11-13 16:29:03 】 浏览:420
Tags:Kafka 使用 Java 客户端 进行 访问

卡夫卡中间件安装
find / -name kafka
/opt/cloudera/parcels/KAFKA-3.0.0-1.3.0.0.p0.40/etc/default/kafka
/opt/cloudera/parcels/KAFKA-3.0.0-1.3.0.0.p0.40/etc/kafka
/opt/cloudera/parcels/KAFKA-3.0.0-1.3.0.0.p0.40/lib/kafka
/var/lib/kafka
/var/log/kafka
/var/local/kafka
/etc/kafka
find: “/proc/12696”: 没有那个文件或目录
find: “/proc/12697”: 没有那个文件或目录


cd /opt/cloudera/parcels/KAFKA-3.0.0-1.3.0.0.p0.40/lib/kafka
执行ls显示:
bin cloudera config libs LICENSE NOTICE site-docs

执行以下命令查看版本
find ./libs/ -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'
显示:
kafka_2.11-0.11.0-kafka-3.0.0.jar

创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

展示topic
bin/kafka-topics.sh --list --zookeeper localhost:2181

描述topic
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

生产者:
bin/kafka-console-producer.sh --broker-list 130.51.23.95:9092 --topic my-replicated-topic

消费者:
bin/kafka-console-consumer.sh --zookeeper 130.51.23.95:2181 --topic test --from-beginnin

复制代码

删除topicbin/kafka-topics.sh --delete --zookeeper 130.51.23.95:2181 --topic topicname删除topic中存储的内容在config/server.properties中找到如下的位置

删除log.dirs指定的文件目录,然后重新启动就可以了



启动命令行生产者(需要注意带端口)
kafka-console-producer --broker-list node2.cdh.mulhyac.com:9092,node3.cdh.mulhyac.com:9092,node1.cdh.mulhyac.com:9092 --topic test
kafka-console-producer --zookeeper node2.cdh.mulhyac.com,node3.cdh.mulhyac.com,node1.cdh.mulhyac.com --topic test
kafka-console-consumer --zookeeper node2.cdh.mulhyac.com,node3.cdh.mulhyac.com,node1.cdh.mulhyac.com --topic test

1.添加maven依赖包
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.9.0.1</version>
</dependency>

2. 生产者代码
public class KafkaProducerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "master:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer<String, String> producer = new KafkaProducer<>(props);
for(int i = 0; i < 100; i++)
producer.send(new ProducerRecord<>("topic1", Integer.toString(i), Integer.toString(i)));

producer.close();
}
}
3.消费者代码

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 KafkaConsumerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "master:9092");
props.put("group.id", "test");
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
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<>(props);
consumer.subscribe(Arrays.asList("topic1"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records)
System.out.printf("offset = %d, key = %s, value = %s\n", record.offset(), record.key(), record.value());
}
}
}
4.执行程序

lib底下需要有:kafka-clients-0.9.0.1.jar log4j-1.2.17.jar slf4j-api-1.7.6.jar slf4j-log4j12-1.7.6.jar
生产者:
java -classpath learn-kafka-1.0.0.jar:lib/* com.mulhyac.learn.kafka.demo.KafkaProducerExample

消费者:
java -classpath learn-kafka-1.0.0.jar:lib/* com.mulhyac.learn.kafka.demo.KafkaConsumerExample

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Apache kafka 工作原理介绍(作者.. 下一篇java kafka 连接错误

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目