Kafka命令行操作及常用API
一、Kafka命令行操作
1.查看当前集群已存在的主题
bin/kafka-topic.sh --zookeeper hd09-01:2181 --list
2.创建主题
bin/kafka-topic.sh --zookeeper hd09-01:2181 --create --relication-factor 3 \
>--partition 1 \
>---topic xinnian
3.删除主题
bin/kafka-topic.sh --zookeeper hd09-01:2181 --delete --topic xinnian
4.启动生产者发送消息(相当于直接创建主题)
bin/kafka-console-producer.sh --broker-list hd09-01:9092 --topic xinnian
5.启动消费者接收消息
bin/kafka-console-consumer.sh --bootstrap-server hd09-01:9092 \
>--topic xinnian
>--from-beginning
6.查看主题的详细信息
bin/kafka-topic.sh --zookeeper hd09-01:2181 --describe --topic xinnian
二、Kafka的常用API(生产者和消费者)
注意!!!在本地编译器上编写kafka的生产者消费者API时,要在本地的hosts文件中添加映射!!
1.生产者
1)配置生产者属性(kafka节点地址,是否等待应答,发送消息失败是否重试,批处理消息大小,批处理数据延迟,内存缓冲,序列化等)生产者发送数据,只需序列化
Properties prop = new Properties();
prop.put("","");
2)实例化生产者
KafkaProducer<String,String> producer = new KafkaProducer<String,String>(prop);
3)生产者发送消息(使用只含有ProducerRecord的send方法)
for(~){
producer.send(new ProducerRecord<String,String>("topic","value"));
}
4)关闭生产者资源
producer.close();
/**
* @author: PrincessHug
* @date: 2019/2/28, 16:36
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class Prodecer {
public static void main(String[] args) {
Properties prop = new Properties(); //参数配置
//kafka节点的地址
prop.put("bootstrap.servers", "192.168.126.128:9092");
//发送消息是否等待应答
prop.put("acks", "all");
//配置发送消息失败重试
prop.put("retries", "");
//配置批量处理消息大小
prop.put("batch.size", "");
//配置批量处理数据延迟
prop.put("linger.ms","");
//配置内存缓冲大小
prop.put("buffer.memory", "");
//消息在发送前必须序列化
prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> producer = new KafkaProducer<String, String>(prop); for (int i=;i<;i++){
producer.send(new ProducerRecord<String, String>("xinnian", "" + i + "年新年好!"));
} producer.close(); }
}
2.消费者
1)配置消费者属性(服务器地址,消费者组,自动确认偏移量,反序列化)
Properties prop = new Properties();
2)实例化消费者(线程安全,把consumer定义为常量)
final KafkaConsumer<String,String> consumer = new KafkaConsumer<String,String>(prop);
3)释放资源,线程安全
public class Runtime extends Object
每个Java应用程序都有一个Runtime类的Runtime ,允许应用程序与运行应用程序的环境进行接口。
void addShutdownHook(Thread hook) =>注册一个新的虚拟机关机挂钩。
static Runtime getRuntime() =>返回与当前Java应用程序关联的运行时对象。
4)订阅消息主题,消费者拉取消息poll
while(true){
ConsumerRecords<String,String> records = consumer.poll(1000);
//遍历消息
for(ConsumerRecord<String,String> r:records){
System.out.println(r.key() + "----------" + r.value());
}
}
/**
* @author: PrincessHug
* @date: 2019/2/28, 20:07
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class ConsumerDemo {
public static void main(String[] args) {
//配置消费者属性
Properties prop = new Properties();
prop.put("bootstrap.servers","192.168.126.129:9092");
prop.put("group.id","g1");
prop.put("enable.auto.commit","true");
prop.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
prop.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer"); //初始化消费的对象
final KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(prop); //线程安全,释放资源
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
if (consumer!=null){
consumer.close();
}
}
})); //消费者订阅主题
consumer.subscribe(Arrays.asList("xinnian")); //消费者拉取消息
while (true){
ConsumerRecords<String, String> records = consumer.poll(1000);
for (ConsumerRecord<String, String> record:records){
System.out.println(record.topic()+"-----"+record.value());
}
} }
}
Kafka命令行操作及常用API的更多相关文章
- 4、Kafka命令行操作
Kafka命令行操作 1)查看当前服务器中的所有topic [test@ip101 kafka]$ bin/kafka-topics.sh --zookeeper ip101:2181 --list ...
- Kafka命令行操作
Kafka命令行操作 1)查看当前服务器中的所有topic [bingo@hadoop101 kafka]$ bin/kafka-topics.sh --list --zookeeper hadoop ...
- DOS命令行操作MySQL常用命令
平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...
- kafka 命令行操作
1.创建主题(topic) bin/kafka-topics.sh --create --zookeeper m6:2181 --replication-factor 1 --partitions 1 ...
- ubuntu命令行操作mysql常用操作
登陆mysql harvey@harvey-Virtual-Machine:~/ruby/mydiary$ mysql -u root -p Enter password: Welcome to th ...
- kafka工作流程| 命令行操作
1. 概述 数据层:结构化数据+非结构化数据+日志信息(大部分为结构化) 传输层:flume(采集日志--->存储性框架(如HDFS.kafka.Hive.Hbase))+sqoop(关系型数 ...
- HDFS分布式文件系统的常用命令行操作
一.HDFS的客户端种类 1.网页形式 =>用于测试 网址为你的namenode节点的ip+50070的端口号,如: 192.168.50.128:50070 2.命令行形式 =>用于测 ...
- git 常用命令行操作
git常用命令行操作: 点击 git bash 进入到命令行: git clone https://github.com/wlz1244/qingoo.git //下载一个master分支代码 g ...
- ZooKeeper常用命令行操作
ZooKeeper常用命令行操作 通过./zkCli.sh 打开zk的客户端进入命令行后台 ls/ls2 列出当前节点下的子节点 ls2还会列出当前节点的状态 [zk: localhost:2181( ...
随机推荐
- HTML中特殊符号的处理
一.写在前面 今天在写页面时记不清大/小于符号该怎么写,于是就想着整理一下方便后面用到! 二.HTML中常用特殊符号的处理 < < 小于号或显示标记 > ...
- vue三大框架
vue 前端三大新框架: Angular.js------Google研发 缺点: 学习成本高.最早研发 严谨 React.js facebook.com (脸书)自主研发 开源 j ...
- 最短路径之Bellman-Ford算法
第一行为源点个数,边的个数m 接下来m行为a->b和权值 5 52 3 21 2 -31 5 54 5 23 4 3 Bellman-Ford算法(1): #include<iostrea ...
- Question Of AI Model Training
1 模型训练基本步骤 准备原始数据,定义神经网络结构及前向传播算法 定义loss,选择反向传播优化算法 生成Session,在训练数据进行迭代训练,使loss到达最小 在测试集或者验证集上对准确率进行 ...
- SQLmap注入启发式检测算法
1.经过setTargetEnv()就进入了checkWaf()的环节 def checkWaf(): """ Reference: http://sec ...
- html5 drag 文件拖拽浅淡
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在一些开源框架中,dist文件夹是什么意思
全称是distribution. distribution英 [dɪstrɪ'bjuːʃ(ə)n]美 ['dɪstrə'bjʊʃən]: 发行版 n. 分布:分配 在某些框架中,因为开发和发布是的内容 ...
- 输出GPLT
L1-023 输出GPLT (20 分) 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符( ...
- SVN_2008R2 搭建流程与规范
Svn服务在win2008 搭建 1:svn服务的原理与架构 1.Svn服务可以理解为加强版的ftp文件服务器, svn采用HTTP协议的方式进行文件传输 2.服务端安装好后,普通用户也需要下载一个c ...
- 记录mysql正在执行的SQL语句
show variables like "general_log%"; SET GLOBAL general_log = 'ON';SET GLOBAL general_log = ...