kafka学习
来源:互联网 发布:eclipse json编辑器 编辑:程序博客网 时间:2024/06/05 20:41
刚开始学习,看到一个不错的学习网站,记录一下:
http://orchome.com/66
对于kafka自己理解的不深刻,此处仅仅是记录一下。对于kafka目前我觉得它就是一个消息队列,但是在分布式方面做得更加好。我始终觉得学习应该先实践,在实践中验证理论。所以应该先知道kafka的用处和如何使用。
- kafka如何使用
如果使用maven工程,我们首先应该引入maven依赖,如下:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.10</artifactId> <version>0.8.0</version> </dependency>
然后在使用kafka的时候,我们必然是考虑2个方面。一方面是生产者,一方面是消费者。下面有2个demo分别演示生产者如何使用kafka,消费者如何使用kafka。
生产者使用示例:
package cn.outofmemory.kafka; import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; /** * Hello world! * */ public class KafkaProducer { private final Producer<String, String> producer; public final static String TOPIC = "TEST-TOPIC"; private KafkaProducer(){ Properties props = new Properties(); //此处配置的是kafka的端口 props.put("metadata.broker.list", "192.168.193.148:9092"); //配置value的序列化类 props.put("serializer.class", "kafka.serializer.StringEncoder"); //配置key的序列化类 props.put("key.serializer.class", "kafka.serializer.StringEncoder"); props.put("request.required.acks","-1"); producer = new Producer<String, String>(new ProducerConfig(props)); } void produce() { int messageNo = 1000; final int COUNT = 10000; while (messageNo < COUNT) { String key = String.valueOf(messageNo); String data = "hello kafka message " + key; producer.send(new KeyedMessage<String, String>(TOPIC, key ,data)); System.out.println(data); messageNo ++; } } public static void main( String[] args ) { new KafkaProducer().produce(); } }
消费者使用示例:
package cn.outofmemory.kafka;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
import kafka.javaapi.consumer.ConsumerConnector;
import kafka.serializer.StringDecoder;
import kafka.utils.VerifiableProperties;
public class KafkaConsumer {
private final ConsumerConnector consumer; private KafkaConsumer() { Properties props = new Properties(); //zookeeper 配置 props.put("zookeeper.connect", "192.168.193.148:2181"); //group 代表一个消费组 props.put("group.id", "jd-group"); //zk连接超时 props.put("zookeeper.session.timeout.ms", "4000"); props.put("zookeeper.sync.time.ms", "200"); props.put("auto.commit.interval.ms", "1000"); props.put("auto.offset.reset", "smallest"); //序列化类 props.put("serializer.class", "kafka.serializer.StringEncoder"); ConsumerConfig config = new ConsumerConfig(props); consumer = kafka.consumer.Consumer.createJavaConsumerConnector(config); } void consume() { Map<String, Integer> topicCountMap = new HashMap<String, Integer>(); topicCountMap.put(KafkaProducer.TOPIC, new Integer(1)); StringDecoder keyDecoder = new StringDecoder(new VerifiableProperties()); StringDecoder valueDecoder = new StringDecoder(new VerifiableProperties()); Map<String, List<KafkaStream<String, String>>> consumerMap = consumer.createMessageStreams(topicCountMap,keyDecoder,valueDecoder); KafkaStream<String, String> stream = consumerMap.get(KafkaProducer.TOPIC).get(0); ConsumerIterator<String, String> it = stream.iterator(); while (it.hasNext()) System.out.println(it.next().message()); } public static void main(String[] args) { new KafkaConsumer().consume(); }
}
然后需要注意的地方是,生产者配置的是kafka的ip和端口,而消费者需要配置的是zk的ip和端口。
- kafka学习
- kafka 学习
- kafka学习
- kafka学习
- kafka学习
- kafka学习
- Kafka学习
- kafka学习
- kafka学习
- kafka学习
- kafka学习
- kafka学习七:kafka 运维
- 学习kafka:log4j写入kafka
- Kafka学习笔记:初识Kafka
- Kafka学习笔记
- kafka学习之路
- kafka学习之二
- Kafka学习笔记
- Leaflet 官方教程-Non-geographical maps 非地理地图
- [转]JLink重刷固件(win7/win8/win10亲测可用)
- javascript模拟面向对象程序设计编程(二)
- spring 日期格式化
- 神经网络初探:反向传播算法
- kafka学习
- 0-1背包问题
- 欢迎使用CSDN-markdown编辑器
- webstorm 2017 激活破解 最新
- OSTU大律法二值化原理
- centOS安装telnet(在线和rpm包安装)
- 线程(6)--线程同步之同步方法和同步块
- the requested url returned error: 403
- 【错误处理】Angular报错:ERROR in MessageDetailComponent is not an NgModule