转载自:http://blog.csdn.net/qq_26479655/article/details/52555283

首先导入包

  1. 将kafka目录下的libs中的jar包导入
  2. 用maven建立

  1. <dependency>
  2. <groupId>org.apache.kafka</groupId>
  3. <artifactId>kafka-clients</artifactId>
  4. <version>0.10.0.1</version>
  5. </dependency>

写好properties配置文件 
一下为项目结构 


  1. #kafka集群地址
  2. bootstrap.servers = 192.168.168.200:9092
  3. client.id = testProducer
  4. key.serializer = org.apache.kafka.common.serialization.IntegerSerializer
  5. value.serializer = org.apache.kafka.common.serialization.StringSerializer

然后上代码


  1. package kafka.producer;
  2. import java.io.IOException;
  3. import java.util.Properties;
  4. import java.util.concurrent.ExecutionException;
  5. import org.apache.kafka.clients.producer.Callback;
  6. import org.apache.kafka.clients.producer.KafkaProducer;
  7. import org.apache.kafka.clients.producer.ProducerRecord;
  8. import org.apache.kafka.clients.producer.RecordMetadata;
  9. public class ProducerTest extends Thread{
  10. private final KafkaProducer<Integer, String> producer;
  11. private final String topic;
  12. private final Boolean isAsync;
  13. /*isAsync同步、异步*/
  14. public ProducerTest(String topic, Boolean isAsync) {
  15. Properties properties = new Properties();
  16. /*加载配置文件*/
  17. try {
  18. properties.load(ProducerTest.class.getClassLoader().getResourceAsStream("conf/kafka.producer.properties"));
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. producer = new KafkaProducer<>(properties);
  23. this.topic = topic;
  24. this.isAsync = isAsync;
  25. }
  26. public void run() {
  27. int messageNo = 1;
  28. while (true) {
  29. String messageStr = "Message_" + messageNo;
  30. long startTime = System.currentTimeMillis();
  31. if (isAsync) { // Send asynchronously
  32. producer.send(new ProducerRecord<>(topic,
  33. messageNo,
  34. messageStr), new DemoCallBack(startTime, messageNo, messageStr));
  35. } else { // Send synchronously
  36. try {
  37. producer.send(new ProducerRecord<>(topic,
  38. messageNo,
  39. messageStr)).get();
  40. System.out.println("Sent message: (" + messageNo + ", " + messageStr + ")");
  41. } catch (InterruptedException | ExecutionException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. ++messageNo;
  46. }
  47. }
  48. }
  49. class DemoCallBack implements Callback {
  50. private final long startTime;
  51. private final int key;
  52. private final String message;
  53. public DemoCallBack(long startTime, int key, String message) {
  54. this.startTime = startTime;
  55. this.key = key;
  56. this.message = message;
  57. }
  58. /**
  59. * @param metadata  The metadata for the record that was sent (i.e. the partition and offset). Null if an error
  60. *                  occurred.
  61. * @param exception The exception thrown during processing of this record. Null if no error occurred.
  62. */
  63. public void onCompletion(RecordMetadata metadata, Exception exception) {
  64. long elapsedTime = System.currentTimeMillis() - startTime;
  65. if (metadata != null) {
  66. System.out.println(
  67. "message(" + key + ", " + message + ") sent to partition(" + metadata.partition() +
  68. "), " +
  69. "offset(" + metadata.offset() + ") in " + elapsedTime + " ms");
  70. } else {
  71. exception.printStackTrace();
  72. }
  73. }
  74. }

测试代码


  1. package kafka.producer;
  2. public class Main {
  3. public static void main(String[] args) {
  4. ProducerTest test = new ProducerTest("TestTopic", true);
  5. test.start();
  6. }
  7. }

运行结果


  1. message(51215, Message_51215) sent to partition(0), offset(161830) in 3497 ms
  2. message(51216, Message_51216) sent to partition(0), offset(161831) in 3497 ms
  3. message(51217, Message_51217) sent to partition(0), offset(161832) in 3497 ms
  4. message(51218, Message_51218) sent to partition(0), offset(161833) in 3497 ms
  5. message(51219, Message_51219) sent to partition(0), offset(161834) in 3497 ms
  6. message(51220, Message_51220) sent to partition(0), offset(161835) in 3497 ms
  7. message(51221, Message_51221) sent to partition(0), offset(161836) in 3497 ms
  8. message(51222, Message_51222) sent to partition(0), offset(161837) in 3497 ms
  9. message(51223, Message_51223) sent to partition(0), offset(161838) in 3497 ms
  10. message(51224, Message_51224) sent to partition(0), offset(161839) in 3497 ms
  11. message(51225, Message_51225) sent to partition(0), offset(161840) in 3497 ms
  12. message(51226, Message_51226) sent to partition(0), offset(161841) in 3497 ms
  13. message(51227, Message_51227) sent to partition(0), offset(161842) in 3497 ms
  14. message(51228, Message_51228) sent to partition(0), offset(161843) in 3497 ms
  15. .............​

kafka_2.11-0.10.0.1生产者producer的Java实现的更多相关文章

  1. kafka 0.10.2 消息生产者(producer)

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafk ...

  2. Kafka: Producer (0.10.0.0)

    转自:http://www.cnblogs.com/f1194361820/p/6048429.html 通过前面的架构简述,知道了Producer是用来产生消息记录,并将消息以异步的方式发送给指定的 ...

  3. kafka0.9.0及0.10.0配置属性

    问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...

  4. kafka_2.11-0.8.2.1生产者producer的Java实现

    转载自:http://blog.csdn.net/ch717828/article/details/50818261 1. 开启Kafka Consumer 首先选择集群的一台机器,打开kafka c ...

  5. Kafka版本升级 ( 0.10.0 -> 0.10.2 )

    升级Kafka集群的版本其实很简单,核心步骤只需要4步,但是我们需要在升级的过程中确保每一步操作都不会“打扰”到producer和consumer的正常运转.为此,笔者在本机搭了一个测试环境进行实际的 ...

  6. Kafka 0.10.0

    2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...

  7. kafka 0.8.2 消息生产者 producer

    package com.hashleaf.kafka; import java.util.Properties; import kafka.javaapi.producer.Producer; imp ...

  8. hive 0.10 0.11新增特性综述

    我们的hive版本升迁经历了0.7.1 -> 0.8.1 -> 0.9.0,并且线上shark所依赖的hive版本也停留在0.9.0上,在这些版本上有我们自己的bug fix patch和 ...

  9. kafka 0.10.2 消息生产者

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org ...

随机推荐

  1. python Django rest-framework 创建序列化工程步骤

    11创建项目 2创建应用 3stting添加应用(apps)-添加制定数据库-修改显示汉字(zh-hans)-上海时区(Asia/Shanghai) 4主路由添加子路由 5应用里创建子路由 6创建数据 ...

  2. Day14作业及默写

    1.整理今天所学内容,整理知识点,整理博客. pass 2.画好流程图. pass 3.都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出): pass 4.用map来处理字符串列表,把列 ...

  3. Android大作业 --音乐播放器

    1.项目成员(本次作业主要对上一次的音乐播放器进行完善) 韦家城 学号:1600802026 班级:161  博客:https://www.cnblogs.com/ln9969cc/ 邓乾尧 学号:1 ...

  4. HDU 1796 How many integers can you find(容斥原理)

    题目传送:http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=20918&pid=1002 Problem Description    ...

  5. 性能测试-12.Web页面性能指标与建议

    1.页面加载时间 从页面开始加载到页面onload事件触发的时间.一般来说onload触发代表着直接通过HTML引用的CSS,JS,图片资源已经完全加载完毕. 2.全部页面加载时间 全部页面载入时间指 ...

  6. Python使用PIL模块生成随机验证码

    PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont fro ...

  7. Unity 3D Shader流水线

    Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  8. TS 基础数据类型

    1.基础数据类型 Boolean布尔值   Number数字 String字符串  Array数组 Tuple元组  Enum枚举   Any    void Boolean布尔值:true/fals ...

  9. HDU 1087:Super Jumping! Jumping! Jumping!(LIS)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  10. js的以及前端框架

    js定义:浏览器的脚本语言,用简单的语言实现浏览器的操控 基础语法:基础的运算.函数.对象(原型链.对象构造.class) 所有的框架都是基于原生的js来进行的 js的事件:什么时候.什么情况下处理的 ...