Apache Kafka编程入门指南:Producer
来源:互联网 发布:查看linux下的用户 编辑:程序博客网 时间:2024/06/05 09:36
Kafka最初由Linkedin公司开发的分布式、分区的、多副本的、多订阅者的消息系统。它提供了类似于JMS的特性,但是在设计实现
上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer;消息接受者成为C
onsumer;此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖
于zookeeper来保证系统可用性集群保存一些meta信息。本文不打算对Apache Kafka的原理和实现进行介绍,而在编程的角度上介
绍如何使用Apache Kafka。我们分别介绍如何编写Producer、Consumer以及Partitioner等。
引入依赖
在编程之前,我们首先引入kafka的依赖,在你的pom.xml文件加入以下依赖:
或者在你的build.sbt文件加入以下依赖:
配置属性
为了使得我们能够连上Kafka集群、如何系列化消息以及其他的属性,我们需要在程序里面进行相关的配置,如下:2、serializer.class这个参数指定了如何系列化发送的消息,这个参数的默认值是kafka.serializer.DefaultEncoder,它将Array[Byte]转换成Array[Byte],也就是说什么都没做,如果你发送的消息不是Array[Byte]的,那么我们需要指定。当然,我们可以自定义消息系列化类,只需要继承kafka.serializer.Encoder即可,实现其中的toBytes方法即可(详情可以参见《用Spark往Kafka里面写对象设计与实现》)。
3、key.serializer.class参数指定了如何系列化消息的key,默认值同serializer.class,也是可以自定义的。
4.partitioner.class参数指定了如何根据消息计算其分区号,必须是继承kafka.producer.Partitioner的类。默认值是kafka.producer.DefaultPartitioner,他是根据key的哈希值模上总分区数的。如果没有指定key,那么Producer将为这条消息随机选择一个分区。
5、request.required.acks参数指定了Producer发送消息之后是否需要来自Broker的acknowledgement,默认值为0,也就是不需要acknowledgement,这种情况下Producer只管发送消息,可能会导致消息丢失,但是因为不需要确认,所以发送速度也是很快的。
Producer的参数有很多个,我们可以根据自己需求来设定。
创建Producer
置好配置属性之后,我们可以创建Producer,如下:
上面的iteblog是topic的名字,如果这个topic不存在,producer可以创建,但是我们需要保证auto.create.topics.enable参数设置成ture了(默认值就是true)。这样简单地往Kafka里面发送消息的程序就完成了。作为例子,我实现了自定义的分区类,其核心和默认的分区类思路类似:
发送消息
producer有个send的函数,可以发送消息。我们可以将消息封装成KeyedMessage,指定其中的topic,key以及value即可
定义分区
完整代码
运行和测试
本程序的运行方式很简单,直接使用java命令即可运行:
0 0
- Apache Kafka编程入门指南:Producer
- Apache Kafka编程入门指南:Producer
- Apache Kafka编程入门指南:Producer篇
- Apache Kafka编程入门指南:Producer
- 大数据生态系统基础:Apache Kafka基础(二):最新kafka编程入门:Producer API
- [Apache Kafka]开发producer
- Apache Kafka开发入门指南
- Kafka Producer编程一
- Apache Kafka开发入门指南之2
- Apache Kafka编程入门指南:设置分区数和复制因子
- Apache Kafka编程入门指南:设置分区数和复制因子
- Apache Kafka编程入门指南:设置分区数和复制因子
- apache kafka系列之Producer处理逻辑
- apache kafka源码分析走读-Producer分析
- apache kafka源码分析走读-Producer分析
- apache kafka源码分析-Producer分析
- apache kafka源码分析-Producer分析
- Kafka(producer和consumer编程实践)
- 利用快排思想找出数组中第k大的元素
- 自动化部署java的war应用到tomcat脚本
- MySQL双主热备问题处理
- 8月份项目开发之后总结
- JS中日期格式化,加一天加一月等等
- Apache Kafka编程入门指南:Producer
- android 断言的 使用
- Hive 权限控制
- 杭州8岁女孩放歌G20峰会 女孩由张艺谋选定
- 349. Intersection of Two Arrays
- Angularjs 阻止默认事件
- 泛型五大约束
- Python_TCP编程
- cloudera manager下的hive权限配置