kafka_2.11-0.10.0.1生产者producer的Java实现
转载自:http://blog.csdn.net/qq_26479655/article/details/52555283
首先导入包
- 将kafka目录下的
libs中的jar包导入 - 用maven建立
- <dependency>
- <groupId>org.apache.kafka</groupId>
- <artifactId>kafka-clients</artifactId>
- <version>0.10.0.1</version>
- </dependency>
写好properties配置文件
一下为项目结构
- #kafka集群地址
- bootstrap.servers = 192.168.168.200:9092
- client.id = testProducer
- key.serializer = org.apache.kafka.common.serialization.IntegerSerializer
- value.serializer = org.apache.kafka.common.serialization.StringSerializer
然后上代码
- package kafka.producer;
- import java.io.IOException;
- import java.util.Properties;
- import java.util.concurrent.ExecutionException;
- import org.apache.kafka.clients.producer.Callback;
- import org.apache.kafka.clients.producer.KafkaProducer;
- import org.apache.kafka.clients.producer.ProducerRecord;
- import org.apache.kafka.clients.producer.RecordMetadata;
- public class ProducerTest extends Thread{
- private final KafkaProducer<Integer, String> producer;
- private final String topic;
- private final Boolean isAsync;
- /*isAsync同步、异步*/
- public ProducerTest(String topic, Boolean isAsync) {
- Properties properties = new Properties();
- /*加载配置文件*/
- try {
- properties.load(ProducerTest.class.getClassLoader().getResourceAsStream("conf/kafka.producer.properties"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- producer = new KafkaProducer<>(properties);
- this.topic = topic;
- this.isAsync = isAsync;
- }
- public void run() {
- int messageNo = 1;
- while (true) {
- String messageStr = "Message_" + messageNo;
- long startTime = System.currentTimeMillis();
- if (isAsync) { // Send asynchronously
- producer.send(new ProducerRecord<>(topic,
- messageNo,
- messageStr), new DemoCallBack(startTime, messageNo, messageStr));
- } else { // Send synchronously
- try {
- producer.send(new ProducerRecord<>(topic,
- messageNo,
- messageStr)).get();
- System.out.println("Sent message: (" + messageNo + ", " + messageStr + ")");
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- ++messageNo;
- }
- }
- }
- class DemoCallBack implements Callback {
- private final long startTime;
- private final int key;
- private final String message;
- public DemoCallBack(long startTime, int key, String message) {
- this.startTime = startTime;
- this.key = key;
- this.message = message;
- }
- /**
- * @param metadata The metadata for the record that was sent (i.e. the partition and offset). Null if an error
- * occurred.
- * @param exception The exception thrown during processing of this record. Null if no error occurred.
- */
- public void onCompletion(RecordMetadata metadata, Exception exception) {
- long elapsedTime = System.currentTimeMillis() - startTime;
- if (metadata != null) {
- System.out.println(
- "message(" + key + ", " + message + ") sent to partition(" + metadata.partition() +
- "), " +
- "offset(" + metadata.offset() + ") in " + elapsedTime + " ms");
- } else {
- exception.printStackTrace();
- }
- }
- }
测试代码
- package kafka.producer;
- public class Main {
- public static void main(String[] args) {
- ProducerTest test = new ProducerTest("TestTopic", true);
- test.start();
- }
- }
运行结果
- message(51215, Message_51215) sent to partition(0), offset(161830) in 3497 ms
- message(51216, Message_51216) sent to partition(0), offset(161831) in 3497 ms
- message(51217, Message_51217) sent to partition(0), offset(161832) in 3497 ms
- message(51218, Message_51218) sent to partition(0), offset(161833) in 3497 ms
- message(51219, Message_51219) sent to partition(0), offset(161834) in 3497 ms
- message(51220, Message_51220) sent to partition(0), offset(161835) in 3497 ms
- message(51221, Message_51221) sent to partition(0), offset(161836) in 3497 ms
- message(51222, Message_51222) sent to partition(0), offset(161837) in 3497 ms
- message(51223, Message_51223) sent to partition(0), offset(161838) in 3497 ms
- message(51224, Message_51224) sent to partition(0), offset(161839) in 3497 ms
- message(51225, Message_51225) sent to partition(0), offset(161840) in 3497 ms
- message(51226, Message_51226) sent to partition(0), offset(161841) in 3497 ms
- message(51227, Message_51227) sent to partition(0), offset(161842) in 3497 ms
- message(51228, Message_51228) sent to partition(0), offset(161843) in 3497 ms
- .............
kafka_2.11-0.10.0.1生产者producer的Java实现的更多相关文章
- kafka 0.10.2 消息生产者(producer)
package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafk ...
- Kafka: Producer (0.10.0.0)
转自:http://www.cnblogs.com/f1194361820/p/6048429.html 通过前面的架构简述,知道了Producer是用来产生消息记录,并将消息以异步的方式发送给指定的 ...
- kafka0.9.0及0.10.0配置属性
问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...
- kafka_2.11-0.8.2.1生产者producer的Java实现
转载自:http://blog.csdn.net/ch717828/article/details/50818261 1. 开启Kafka Consumer 首先选择集群的一台机器,打开kafka c ...
- Kafka版本升级 ( 0.10.0 -> 0.10.2 )
升级Kafka集群的版本其实很简单,核心步骤只需要4步,但是我们需要在升级的过程中确保每一步操作都不会“打扰”到producer和consumer的正常运转.为此,笔者在本机搭了一个测试环境进行实际的 ...
- Kafka 0.10.0
2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...
- kafka 0.8.2 消息生产者 producer
package com.hashleaf.kafka; import java.util.Properties; import kafka.javaapi.producer.Producer; imp ...
- hive 0.10 0.11新增特性综述
我们的hive版本升迁经历了0.7.1 -> 0.8.1 -> 0.9.0,并且线上shark所依赖的hive版本也停留在0.9.0上,在这些版本上有我们自己的bug fix patch和 ...
- kafka 0.10.2 消息生产者
package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org ...
随机推荐
- scrapy中自动补全url
url = "https:" + url 或者url = response.urljoin(url) #这里代表的是自动补全url
- 基于区域的OSPF简单认证
实验要求:掌握OSPF区域简单认证配置 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1.1 2 ...
- posix信号量与互斥锁
1.简介 POSIX信号量是一个sem_t 类型的变量,但POSIX 有两种信号量的实现机制:无名信号量和命名信号量.无名信号量可以用在共享内存的情况下, 比如实现进程中各个线程之间的互斥和同步.命名 ...
- C++指针易错点梳理
1 指针定义 指针是一个变量:指针的值是另一个变量的地址.变量的声明 type *var-name; var-name 是指针变量的名称.星号是用来指定一个变量var-name是指针变量. int * ...
- 用conda创建python虚拟环境
1.首先在所在系统中安装Anaconda.可以打开命令行输入conda -V检验是否安装以及当前conda的版本. 2.conda常用的命令. 1)conda list 查看安装了哪些包. 2)con ...
- flask中的request和response
1.request 1.request的常用成员 1.scheme : 获取请求方案(协议) 2.method : 获取本期请求的请求方式(重点) 3.args : 获取使用get请求方式提交的数据 ...
- 关于Java堆、栈和常量池的详解
在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译 ...
- P2157 [SDOI2009]学校食堂 (dp+状态压缩)
题目链接:传送门 题目: 题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人 ...
- Blender Tutorial - Earth curves [Animation nodes]笔记
https://www.youtube.com/watch?v=jEYI4lnOprY&t= Blender Tutorial - Earth curves [Animation nodes] ...
- 一天掌握python爬虫
一天掌握python爬虫日记: (小爬虫,NO 我们是大蜘蛛 ) 数据抓取: requests:requests 的底层实现其实就是 urllib开源地址:https://github.com/ken ...