一、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();

  1. /**
  2. * @author: PrincessHug
  3. * @date: 2019/2/28, 16:36
  4. * @Blog: https://www.cnblogs.com/HelloBigTable/
  5. */
  6. public class Prodecer {
  7. public static void main(String[] args) {
  8. Properties prop = new Properties();
  9.  
  10. //参数配置
  11. //kafka节点的地址
  12. prop.put("bootstrap.servers", "192.168.126.128:9092");
  13. //发送消息是否等待应答
  14. prop.put("acks", "all");
  15. //配置发送消息失败重试
  16. prop.put("retries", "");
  17. //配置批量处理消息大小
  18. prop.put("batch.size", "");
  19. //配置批量处理数据延迟
  20. prop.put("linger.ms","");
  21. //配置内存缓冲大小
  22. prop.put("buffer.memory", "");
  23. //消息在发送前必须序列化
  24. prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  25. prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  26.  
  27. KafkaProducer<String, String> producer = new KafkaProducer<String, String>(prop);
  28.  
  29. for (int i=;i<;i++){
  30. producer.send(new ProducerRecord<String, String>("xinnian", "" + i + "年新年好!"));
  31. }
  32.  
  33. producer.close();
  34.  
  35. }
  36. }

  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());
        }
     }

  1. /**
  2. * @author: PrincessHug
  3. * @date: 2019/2/28, 20:07
  4. * @Blog: https://www.cnblogs.com/HelloBigTable/
  5. */
  6. public class ConsumerDemo {
  7. public static void main(String[] args) {
  8. //配置消费者属性
  9. Properties prop = new Properties();
  10. prop.put("bootstrap.servers","192.168.126.129:9092");
  11. prop.put("group.id","g1");
  12. prop.put("enable.auto.commit","true");
  13. prop.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
  14. prop.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
  15.  
  16. //初始化消费的对象
  17. final KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(prop);
  18.  
  19. //线程安全,释放资源
  20. Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
  21. public void run() {
  22. if (consumer!=null){
  23. consumer.close();
  24. }
  25. }
  26. }));
  27.  
  28. //消费者订阅主题
  29. consumer.subscribe(Arrays.asList("xinnian"));
  30.  
  31. //消费者拉取消息
  32. while (true){
  33. ConsumerRecords<String, String> records = consumer.poll(1000);
  34. for (ConsumerRecord<String, String> record:records){
  35. System.out.println(record.topic()+"-----"+record.value());
  36. }
  37. }
  38.  
  39. }
  40. }

Kafka命令行操作及常用API的更多相关文章

  1. 4、Kafka命令行操作

    Kafka命令行操作 1)查看当前服务器中的所有topic [test@ip101 kafka]$ bin/kafka-topics.sh --zookeeper ip101:2181 --list ...

  2. Kafka命令行操作

    Kafka命令行操作 1)查看当前服务器中的所有topic [bingo@hadoop101 kafka]$ bin/kafka-topics.sh --list --zookeeper hadoop ...

  3. DOS命令行操作MySQL常用命令

    平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...

  4. kafka 命令行操作

    1.创建主题(topic) bin/kafka-topics.sh --create --zookeeper m6:2181 --replication-factor 1 --partitions 1 ...

  5. ubuntu命令行操作mysql常用操作

    登陆mysql harvey@harvey-Virtual-Machine:~/ruby/mydiary$ mysql -u root -p Enter password: Welcome to th ...

  6. kafka工作流程| 命令行操作

    1.  概述 数据层:结构化数据+非结构化数据+日志信息(大部分为结构化) 传输层:flume(采集日志--->存储性框架(如HDFS.kafka.Hive.Hbase))+sqoop(关系型数 ...

  7. HDFS分布式文件系统的常用命令行操作

    一.HDFS的客户端种类 1.网页形式  =>用于测试 网址为你的namenode节点的ip+50070的端口号,如: 192.168.50.128:50070 2.命令行形式 =>用于测 ...

  8. git 常用命令行操作

    git常用命令行操作: 点击 git bash 进入到命令行: git clone https://github.com/wlz1244/qingoo.git   //下载一个master分支代码 g ...

  9. ZooKeeper常用命令行操作

    ZooKeeper常用命令行操作 通过./zkCli.sh 打开zk的客户端进入命令行后台 ls/ls2 列出当前节点下的子节点 ls2还会列出当前节点的状态 [zk: localhost:2181( ...

随机推荐

  1. python HTML报告

    http://www.cnblogs.com/puresoul/p/7490737.html # coding:utf-8import timeimport unittestimport HTMLTe ...

  2. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  3. Confluence 6 € 欧元字符集不能正常显示

    € (euro) 标记 是一个 3 字节字符,在 (UTF-8)中这个字符被表示为 0xE2, 0x82, 0xAC. 有时候,你的系统中没有设置所有的地方为相同的字符集的时候(Confluence, ...

  4. Confluence 6 为空白空间重置原始默认内容

    希望重置为原始的默认内容: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 在左侧的面板中选择 全局模板和蓝图(Global Templates and ...

  5. day 28 面向对象 三种特性之一 多态 鸭子类型 反射(反省)

    多态是OOP的三大特征之一 字面意思:多种形态 多种状态 官方描述:不同的对象可以响应(调用)同一个方法 产生不同的结果(例如水的三相特征) 多态不是什么新技术 我们编写面向对象的程序时 其实就有多态 ...

  6. c++ 链表基础功能实现

    #include<stack> struct ListNode { int m_nValue; ListNode* m_pNext; }; ListNode* CreateListNode ...

  7. 图像特征的提取(gaussian,gabor,frangi,hessian,Morphology...)及将图片保存为txt文件

    # -*- coding: utf-8 -*- #2018-2-19 14:30:30#Author:Fourmi_gsj import cv2 import numpy as np import p ...

  8. RFC2119:RFC协议动词含义

    协议地址:http://www.ietf.org/rfc/rfc2119.txt MUST 必须的.通过它描述的对象,是强制要求的.它与REQUIRED和SHALL含义相同. MUST NOT 不允许 ...

  9. 三 os模块

    os模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相 ...

  10. As/IDEA json自动生成java bean

    1.先安装GsonFormat插件:File-->Setting-->Plugins-->GsonFormat-->OK 2.new 一个新的Class空文件,然后 Alt+I ...