这篇文章将为大家详细讲解有关Kafka简单客户端编程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、乡宁网络推广、小程序设计、乡宁网络营销、乡宁企业策划、乡宁品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供乡宁建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
一、创建配置类Config
这个类很简单,只是存放了两个常量,一个是话题TOPIC,一个是线程数THREADS
package com.lya.kafka; /** * 配置项 * @author liuyazhuang * */ public class Config { /** * 话题 */ public static final String TOPIC = "wordcount"; /** * 线程数 */ public static final Integer THREADS = 1; }
二、编程生产者类ProducerDemo
这个类的主要作用就是向Kafka写入相应的消息,并且将消息写入wordcount话题。
package com.lya.kafka; import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; /** * 生产者实例 * @author liuyazhuang * */ public class ProducerDemo { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("zk.connect", "192.168.209.121:2181"); props.put("metadata.broker.list","192.168.209.121:9092"); props.put("serializer.class", "kafka.serializer.StringEncoder"); props.put("zk.connectiontimeout.ms", "15000"); ProducerConfig config = new ProducerConfig(props); Producerproducer = new Producer (config); // 发送业务消息 // 读取文件 读取内存数据库 读socket端口 for (int i = 1; i <= 100; i++) { Thread.sleep(500); producer.send(new KeyedMessage (Config.TOPIC, "this number ===>>> " + i)); } } }
三、编写消息者类ConsumerDemo
这个类的主要作用就是消费Kafka中wordcount话题的消息。
package com.lya.kafka; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import kafka.consumer.Consumer; import kafka.consumer.ConsumerConfig; import kafka.consumer.KafkaStream; import kafka.javaapi.consumer.ConsumerConnector; import kafka.message.MessageAndMetadata; /** * 消费者实例 * @author liuyazhuang * */ public class ConsumerDemo { public static void main(String[] args) { Properties props = new Properties(); props.put("zookeeper.connect", "192.168.209.121:2181"); props.put("group.id", "1111"); props.put("auto.offset.reset", "smallest"); props.put("zk.connectiontimeout.ms", "15000"); ConsumerConfig config = new ConsumerConfig(props); ConsumerConnector consumer =Consumer.createJavaConsumerConnector(config); MaptopicCountMap = new HashMap (); topicCountMap.put(Config.TOPIC, Config.THREADS); Map >> consumerMap = consumer.createMessageStreams(topicCountMap); List > streams = consumerMap.get(Config.TOPIC); for(final KafkaStream kafkaStream : streams){ new Thread(new Runnable() { @Override public void run() { for(MessageAndMetadata mm : kafkaStream){ String msg = new String(mm.message()); System.out.println(msg); } } }).start(); } } }
四、运行实例
首先,运行消费者类ConsumerDemo
运行结果如下:
没有打印任何信息。
此时,我们运行生产者类ProducerDemo
我们再次打开消费者的控制台查看如下:
打印出了生产者生产的消息。
至此,Kafka简单客户端编程实例结束。
关于“Kafka简单客户端编程的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。