环境
  虚拟机:VMware 10
  Linux版本:CentOS-6.5-x86_64
  客户端:Xshell4
  FTP:Xftp4
  jdk1.8
  kafka_2.11-0.11.0.0

  zookeeper-3.4.6

生产者:

  1. package com.qyg.test;
  2.  
  3. import java.util.Properties;
  4.  
  5. import kafka.javaapi.producer.Producer;
  6. import kafka.producer.KeyedMessage;
  7. import kafka.producer.ProducerConfig;
  8.  
  9. /**
  10. * java实现Kafka生产者的示例
  11. * 分通道发送数据
  12. */
  13. public class KafkaClusterProTest {
  14. private static final String topic = "REC-CBBO-MSG-TOPIC";
  15.  
  16. public static void main(String[] args) {
  17. String brokerList = "node1:9092,node2:9092,node3:9092";
  18. Properties props = new Properties();
  19. props.put("metadata.broker.list", brokerList);
  20. props.put("request.required.acks", "-1");
  21. props.put("producer.type", "sync");
  22. props.put("serializer.class", "kafka.serializer.StringEncoder");
  23. //分区规则定义
  24. props.put("partitioner.class","com.qyg.test.SimplePartitioner");
  25. props.put("message.send.max.retries", "3");
  26. props.put("batch.num.messages", "200");
  27. props.put("send.buffer.bytes", "102400");
  28. props.put("serializer.encoding", "gbk");
  29. ProducerConfig config = new ProducerConfig(props);
  30. Producer<String, String> producer = new Producer<String, String>(config);
  31.  
  32. for (int i=0;i<1000;i++)
  33. {
  34. System.out.println("msg"+i);
  35. KeyedMessage msg = new KeyedMessage(topic, "0531", "msg"+i);
  36. producer.send(msg);
  37. }
  38.  
  39. producer.close();
  40. }
  41.  
  42. }

消费者:

  1. package com.qyg.test;
  2.  
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Properties;
  7.  
  8. import kafka.consumer.ConsumerConfig;
  9. import kafka.consumer.ConsumerIterator;
  10. import kafka.consumer.KafkaStream;
  11. import kafka.javaapi.consumer.ConsumerConnector;
  12. import kafka.serializer.StringDecoder;
  13. import kafka.utils.VerifiableProperties;
  14.  
  15. public class KafkaConsumer {
  16.  
  17. private final ConsumerConnector consumer;
  18.  
  19. private KafkaConsumer() {
  20. Properties props = new Properties();
  21.  
  22. // zookeeper 配置
  23. props.put("zookeeper.connect", "node3:2181,node4:2181,node5:2181");
  24.  
  25. // 消费者所在组
  26. props.put("group.id", "MyGroup1");
  27.  
  28. // zk连接超时
  29. props.put("zookeeper.session.timeout.ms", "4000");
  30. props.put("zookeeper.sync.time.ms", "200");
  31. props.put("auto.commit.interval.ms", "1000");
  32. /**
  33. * 此配置参数表示当此groupId下的消费者,在ZK中没有offset值时(比如新的groupId,或者是zk数据被清空),
  34. * consumer应该从哪个offset开始消费.largest表示接受接收最大的offset(即最新消息),
  35. * smallest表示最小offset,即从topic的开始位置消费所有消息.
  36. */
  37. props.put("auto.offset.reset", "smallest");
  38.  
  39. // 序列化类
  40. props.put("serializer.class", "kafka.serializer.StringEncoder");
  41.  
  42. ConsumerConfig config = new ConsumerConfig(props);
  43.  
  44. consumer = kafka.consumer.Consumer.createJavaConsumerConnector(config);
  45. }
  46.  
  47. void consume() {
  48. Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
  49. topicCountMap.put("REC-CBBO-MSG-TOPIC", new Integer(1));
  50.  
  51. StringDecoder keyDecoder = new StringDecoder(new VerifiableProperties());
  52. StringDecoder valueDecoder = new StringDecoder(new VerifiableProperties());
  53. Map<String, List<KafkaStream<String, String>>> consumerMap = consumer.createMessageStreams(topicCountMap,keyDecoder,valueDecoder);
  54. KafkaStream<String, String> stream = consumerMap.get("REC-CBBO-MSG-TOPIC").get(0);
  55. ConsumerIterator<String, String> it = stream.iterator();
  56.  
  57. while (it.hasNext()){
  58. System.out.println(it.next().message());
  59. }
  60. }
  61.  
  62. public static void main(String[] args) {
  63. new KafkaConsumer().consume();
  64. }
  65. }

【kafka学习之六】kakfa消息生产、消费示例的更多相关文章

  1. Kafka创建&查看topic,生产&消费指定topic消息

    启动zookeeper和Kafka之后,进入kafka目录(安装/启动kafka参考前面一章:https://www.cnblogs.com/cici20166/p/9425613.html) 1.创 ...

  2. Kafka(三)Kafka的高可用与生产消费过程解析

    一  Kafka HA设计解析 1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据 ...

  3. NSQ源码剖析——主要结构方法和消息生产消费过程

    目录 1 概述 2 主要结构体及方法 2.1 NSQD 2.2 tcpServer 2.3 protocolV2 2.4 clientV2 2.5 Topic 2.6 channel 3 启动过程 4 ...

  4. Kafka 通过python简单的生产消费实现

    使用CentOS6.5.python3.6.kafkaScala 2.10  - kafka_2.10-0.8.2.2.tgz (asc, md5) 一.下载kafka 下载地址 https://ka ...

  5. 事件消息生产消费中间件-OSS.DataFlow

    系统重构解耦的过程涉及不同领域服务分拆,或同一服务下实时响应部分和非响应部分分拆,分解后的各部分通过异步消息的流转传递,完成整体的业务逻辑,但是频繁的在业务层面直接调用不同消息队列的SDK,个人感觉不 ...

  6. Spring整合ActiveMQ,实现队列主题消息生产消费

    1.引入依赖 pom.xml 1 <!-- activemq --> 2 <dependency> 3 <groupId>org.springframework&l ...

  7. Kafka(分布式发布-订阅消息系统)工作流程说明

    Kafka系统架构Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和 ...

  8. kafka之三:kafka java 生产消费程序demo示例

    kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kafka的安装请参考官方文档. 首先我们需要新建一个maven项目,然后在 ...

  9. kafka_2.11-0.8.2.1+java 生产消费程序demo示例

      Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...

随机推荐

  1. 给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。

    问题: 给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数. 你总共三种操作方法: 1.插入一个字符 2.删除一个字符 3.替换一个字符 格式: 输入行输 ...

  2. 【C语言程序】基因编码

    输入一个长为n=2k(k≤8)01串s,按照"ABC编码规则"进行编码,ABC编码规则是: A                      //若s串全是0 T(s)=        ...

  3. 封装的head

    //获取浏览器和版本号var userAgent=window.navigator.userAgent, rMsie=/(msie\s|trident.*rv:)([\w.]+)/, rFirefox ...

  4. SpringMVC用到的jar包

    SpringMVC用到的jar包 自己搭建一个SpringMVC框架时需要用到相应的jar包,参考下载网址: http://repo.spring.io/release/org/springframe ...

  5. HBase RegionServer Pause for hours 卡顿几小时 故障

    关键词:hbase jvm gc regionserver wal pause 背景: HBase 1.1.2 客户的hbase集群最近出现RegionServer宕机情况.跟踪了master和RS日 ...

  6. Codechef August Challenge 2018 : Lonely Cycles

    传送门 几波树形dp就行了. #include<cstdio> #include<cstring> #include<algorithm> #define MN 5 ...

  7. 表单/iframe与video标签

    <form action="所有表单值提交的地址" method="传值的方式默认是GET方式,还有另一种POST方式"> 表单元素</for ...

  8. JavaScript基础知识(Math的方法)

    Math的方法 Math : 对象数据类型 : Math: {} 是window下的一个键值对: 属性名叫Math,属性值是一个对象 var obj = {a:1}; console.log(obj. ...

  9. ffmpeg日志调式

    1.播放器打印输出调试日志:ffplay -v debug $URL2.播放器打开详细调试日志:./ffplay -loglevel 563.修改源码修改日志级别:    1)log.c中:stati ...

  10. box-sizing (摘录)

    //http://www.jianshu.com/p/e2eb0d8c9de6 box-sizing其它的值 content-box 描述:在宽度和高度之外绘制元素的内边距和边框. border-bo ...