转载自: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. 如何HACK无线家用警报器?

    30年前,报警器都是硬连线的,具有分立元件,并由钥匙开关操作.20年前,他们已经演变为使用微控制器,LCD和键盘,但仍然是硬连线.10年前,无线报警器开始变得普及,并增加了许多之前没有的功能. 而如今 ...

  2. 2019-04-02-day024-内置方法

    昨日回顾 反射 用"字符串"类型的属性名/方法名来找到 属性的值或者方法的内存地址 所有可以反射的内容实际上都是变量 有内存地址 内存地址存的是"具体的值",直 ...

  3. 2016 多校联赛7 Joint Stacks (优先队列)

    A stack is a data structure in which all insertions and deletions of entries are made at one end, ca ...

  4. Oracle对象(视图、序列、索引)

    数据库对象:表.视图.序列.索引.同义词创建视图:create view 名 as 子查询描述结构:describe 对象名修改视图:create or replace view 名 as 子查询 视 ...

  5. linux 如何使用密钥登录 (CentOs)

    说明:一般的密码方式登录容易被密码暴力破解.所以一般我们会将 SSH 的端口设置为默认22以外的端口,或者禁用root账户登录.其实可以通过密钥登录这种方式来更好地保证安全. 密钥形式登录的原理是:利 ...

  6. ROI-Align解决方案

    https://yq.aliyun.com/articles/558181 Mask R-CNN与Faster R-CNN相似,Faster R-CNN是two-stage的,其中第一个stage是R ...

  7. C与C++中实现 gotoxy()函数

    #include <stdio.h> #include <windows.h> void gotoxy(int x, int y) { COORD pos = {x,y}; H ...

  8. HDU 1000

    A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. 【挑战赛16A】【取石子】【组合数学】

    链接:https://www.nowcoder.com/acm/contest/113/A 来源:牛客网 取石子时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言5 ...

  10. 转:《Javascript模块化编程》

    (一):模块的写法 转载至:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html (二):AMD规范 转载至:http://www ...