kafka0.9版本以后用java重新编写了producer,废除了原来scala编写的版本。

这里直接使用最新2.3版本,0.9以后的版本都适用。

注意引用的包为:org.apache.kafka.clients.producer

  1. import java.util.Properties;
  2. import org.apache.kafka.clients.producer.KafkaProducer;
  3. import org.apache.kafka.clients.producer.ProducerRecord;
  4. public class ProducerDemo {
  5. public static void main(String[] args) {
  6. Properties properties = new Properties();
  7. properties.put("bootstrap.servers", "kafka01:9092,kafka02:9092");
  8. properties.put("acks", "all");
  9. properties.put("retries", 0);
  10. properties.put("batch.size", 16384);
  11. properties.put("linger.ms", 1);
  12. properties.put("buffer.memory", 33554432);
  13. properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  14. properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  15. KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);
  16. kafkaProducer.send(new ProducerRecord<>("topic", "value"));
  17. kafkaProducer.close();
  18. }
  19. }

0.11.0以后增加了事务,事务producer的示例代码如下,需要适用于0.11.0以后的版本:

  1. import org.apache.kafka.clients.producer.KafkaProducer;
  2. import org.apache.kafka.clients.producer.Producer;
  3. import org.apache.kafka.clients.producer.ProducerRecord;
  4. import org.apache.kafka.common.KafkaException;
  5. import org.apache.kafka.common.errors.AuthorizationException;
  6. import org.apache.kafka.common.errors.OutOfOrderSequenceException;
  7. import org.apache.kafka.common.errors.ProducerFencedException;
  8. import org.apache.kafka.common.serialization.StringSerializer;
  9. import java.util.Properties;
  10. public class TransactionsProducerDemo {
  11. public static void main(String[] args) {
  12. Properties props = new Properties();
  13. props.put("bootstrap.servers", "localhost:9092");
  14. props.put("transactional.id", "my-transactional-id");
  15. Producer<String, String> producer = new KafkaProducer<>(props, new StringSerializer(), new StringSerializer());
  16. producer.initTransactions();
  17. try {
  18. producer.beginTransaction();
  19. for (int i = 0; i < 100; i++)
  20. producer.send(new ProducerRecord<>("my-topic", Integer.toString(i), Integer.toString(i)));
  21. producer.commitTransaction();
  22. } catch (ProducerFencedException | OutOfOrderSequenceException | AuthorizationException e) {
  23. // We can't recover from these exceptions, so our only option is to close the producer and exit.
  24. producer.close();
  25. } catch (KafkaException e) {
  26. // For all other exceptions, just abort the transaction and try again.
  27. producer.abortTransaction();
  28. }
  29. producer.close();
  30. }
  31. }

更多实时计算,Kafka等相关技术博文,欢迎关注实时流式计算

Kafka 2.3 Producer (0.9以后版本适用)的更多相关文章

  1. Kafka 0.8 Producer (0.9以前版本适用)

    Kafka旧版本producer由scala编写,0.9以后已经废除,但是很多公司还在使用0.9以前的版本,所以总结如下: 要注意包Producer是 kafka.javaapi.producer.P ...

  2. Kafka manager安装 (支持0.10以后版本consumer)

    下载地址:  https://pan.baidu.com/s/1jIE3YL4 步骤: 1. 解压kafka-manager-1.3.2.1.zip 2. cd kafka-manager-1.3.2 ...

  3. 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8、0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)

    不多说,直接上干货! 至于为什么,要写这篇博客以及安装Kafka-manager? 问题详情 无奈于,在kafka里没有一个较好自带的web ui.启动后无法观看,并且不友好.所以,需安装一个第三方的 ...

  4. Kafka设计解析(二十一)关于Kafka幂等producer的讨论

    转载自 huxihx,原文链接 关于Kafka幂等producer的讨论 众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS) ...

  5. Kafka学习(四)-------- Kafka核心之Producer

    通过https://www.cnblogs.com/tree1123/p/11243668.html 已经对consumer有了一定的了解.producer比consumer要简单一些. 一.旧版本p ...

  6. K8S 搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群

    搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群 一.服务版本信息: Kafka:v2.13-2.6.0 Zookeeper:v3.6.2 Kubernetes:v1. ...

  7. Apache kafka原理与特性(0.8V)

    前言: kafka是一个轻量级的/分布式的/具备replication能力的日志采集组件,通常被集成到应用系统中,收集"用户行为日志"等,并可以使用各种消费终端(consumer) ...

  8. 【转载】Apache kafka原理与特性(0.8V)

    http://blog.csdn.net/xiaolang85/article/details/37821209 前言: kafka是一个轻量级的/分布式的/具备replication能力的日志采集组 ...

  9. apache kafka系列之Producer处理逻辑

     最近研究producer的负载均衡策略,,,,我在librdkafka里边用代码实现了partition 值的轮询方法,,,但是在现场验证时,他的负载均衡不起作用,,,所以来找找原因: 下文是一篇描 ...

随机推荐

  1. C#委托内部使用局部的变量的问题

    一. 引子 先来看如下代码: ; Action action1 = () => { Console.WriteLine("打印一下i的值:" + i); }; i = ; A ...

  2. 从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势

    前不久听说立创EDA,对比之前的讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性 · Issue #11 · program-in-chinese/overview,觉得颇 ...

  3. docker容器跨服务器的迁移的方法

    docker的备份方式有export和save两种. export是当前的状态,针对的是容器,docker save 是针对镜像images. export 找出要备份容器的ID ? 1 2 3 [r ...

  4. C# 集合的交集 差集 并集 去重

    C# 集合的交集 差集 并集 去重 两个对象list,直接比较是不行的,因为他们存的地址不一样 需要重写GetHashCode()与Equals(object obj)方法告诉电脑 class Stu ...

  5. CentOS7破解root密码

    第一步: reboot重启系统,进入修改密码步骤,出现此界面后,按e进行编辑 2.找到linux16这一段中的 ro  crashkernel=xxx, 将 ro 改成rw init=/sysroot ...

  6. wsl笔记

    目录 环境 修改更新源 新建用户 设置超级用户 环境变量 zsh美化终端 设zsh为默认shell 环境变量PATH 开启 ssh 远程连接 apt命令与问题 windows 和 wsl 互相访问文件 ...

  7. viscode 使用 格式的配置

    viscode 现在也越来越适用于 python 开发使用的 IDEA ,慢慢不逊色于  pycharm .下面是关于使用的 格式[字体颜色,背景之类的配置] 1. 2. 如果是设置的 中文显示,在界 ...

  8. .Net Core使用Swagger来对接口文档化

    参考文档来源:https://www.cnblogs.com/yilezhu/p/9241261.html 官方地址 https://swagger.io/ 代码即接口文档,接口文档即代码 使用.ne ...

  9. 25.Java基础_继承

    继承的格式(Java类) Java中继承的注意事项 继承的好处与弊端 继承中成员变量的访问特点(对public形式的变量来说) 继承中成员函数的访问特点 this和super: 继承中构造方法的访问特 ...

  10. 深入理解JavaScript中的作用域和上下文

    介绍 JavaScript中有一个被称为作用域(Scope)的特性.虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,我会尽我所能用最简单的方式来解释作用域.理解作用域将使你的代码脱颖而出,减 ...