首先介绍一下 Kafka 生产者发送消息的过程:

  • Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发送的内容,同时还可以指定键和分区。在发送 ProducerRecord 对象前,生产者会先把键和值对象序列化成字节数组,这样它们才能够在网络上传输。
  • 接下来,数据被传给分区器。如果之前已经在 ProducerRecord 对象里指定了分区,那么分区器就不会再做任何事情。如果没有指定分区 ,那么分区器会根据 ProducerRecord 对象的键来选择一个分区,紧接着,这条记录被添加到一个记录批次里,这个批次里的所有消息会被发送到相同的主题和分区上。有一个独立的线程负责把这些记录批次发送到相应的 broker 上。
  • 服务器在收到这些消息时会返回一个响应。如果消息成功写入 Kafka,就返回一个 RecordMetaData 对象,它包含了主题和分区信息,以及记录在分区里的偏移量。如果写入失败,则会返回一个错误。生产者在收到错误之后会尝试重新发送消息,如果达到指定的重试次数后还没有成功,则直接抛出异常,不再重试。

二、创建生产者

2.1 项目依赖

本项目采用 Maven 构建,想要调用 Kafka 生产者 API,需要导入 kafka-clients 依赖,如下:

org.apache.kafka kafka-clients 2.2.0复制代码

2.2 创建生产者

创建 Kafka 生产者时,以下三个属性是必须指定的:

  • bootstrap.servers :指定 broker 的地址清单,清单里不需要包含所有的 broker 地址,生产者会从给定的 broker 里查找 broker 的信息。不过建议至少要提供两个 broker 的信息作为容错;
  • key.serializer :指定键的序列化器;
  • value.serializer :指定值的序列化器。

创建的示例代码如下:

public class SimpleProducer { public static void main(String[] args) { String topicName = "Hello-Kafka"; Properties props = new Properties(); props.put("bootstrap.servers

kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解相关推荐

  1. Maven精选系列--三种仓库详解

    转载自 Maven精选系列--三种仓库详解 仓库分类 1.本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings ...

  2. View系列 (三) — Measure 流程详解

    Measure 流程详解 一.概述 二.单一 View 的测量流程 1. 流程图 2. 源码分析 三.ViewGroup 的测量流程 1. 流程图 2. 源码分析 一.概述 测量过程分为 View的m ...

  3. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    目录 一.分词器​ 1. 认识分词器 1.1 Analyzer 分析器 1.2 如何测试分词器 2. 内建的字符过滤器(character filter) 2.1 HTML过滤字符过滤器(HTML S ...

  4. kafka key的作用_kafka系列(kafka端到端原理分析)

    Kafka 端到端源码解析 Kafka的场景 Kafka概念 Topic 创建与删除 Topic状态流转 一些问题 Topic分区初始化选择 kafka producer解析 1. 发送流程 2. 分 ...

  5. 人脸识别系列三 | MTCNN算法详解上篇

    前言 我们前面分享了PCA,Fisher Face,LBPH三种传统的人脸识别算法,Dlib人脸检测算法.今天我们开始分享一下MTCNN算法,这个算法可以将人脸检测和特征点检测结合起来,并且MTCNN ...

  6. Linux Rootkit 系列三:实例详解 Rootkit 必备的基本功能

    本文所需的完整代码位于笔者的代码仓库:https://github.com/NoviceLive/research-rootkit. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试 ...

  7. 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解

    Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...

  8. linux rootkit 端口复用,Linux Rootkit系列三:实例详解 Rootkit 必备的基本功能

    前言鉴于笔者知识能力上的不足,如有疏忽,欢迎纠正. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试! 概要 在 上一篇文章中笔者详细地阐述了基于直接修改系统调用表 (即 sys_c ...

  9. OpenCV系列(三):Mat详解

    Mat类是OpenCV最基本的一个数据类型,它可以表示一个多维的多通道的数组.Mat常用来存储图像,包括单通道二维数组--灰度图,多通道二维数组--彩色图.当然也可以用来存储点云,直方图等等,对于高维 ...

最新文章

  1. Windoes普通用户使用管理员下安装的软件
  2. boost::mpi模块从组创建的传播者的测试
  3. zbb20171108 tomcat 性能优化
  4. 总结尚硅谷的视频springboot视频
  5. PHP 常用数据库操作
  6. vb 计算圆环上每一点的坐标_工程土方量计算比较分析
  7. 深入入门正则表达式(java) - 1 - 入门基础
  8. 写一段最短的代码,用上js所有关键字
  9. Android measure过程分析
  10. 企业运行助推器——力软工作流引擎
  11. 坚持写博客对我们有什么好处
  12. vue自定义封装全局组件与使用
  13. 计算机硬盘分区类型,常见磁盘分区格式的区别是什么?
  14. 1.Review of Linear Algebra
  15. 使用C++ 编写嵌入式应用程序
  16. 阿里云 icp 备案流程(光速入门篇)
  17. 基于微信小程序的乐团团购系统设计与实现-计算机毕业设计源码+LW文档
  18. 「引流方法」微商如何获得精准引流的八大方法
  19. JVM是怎么和操作系统交互的?
  20. 一名优秀的管理者应具有那些能力?

热门文章

  1. dev c++ Boost库的安装
  2. 湖北省仙桃市2021年高考成绩查询,2021年4月湖北仙桃市自考成绩查询时间和有效期是多久?...
  3. 【深度学习】深入理解Batch Normalization批归一化
  4. 元组可以直接添加进数据库吗_数据库篇-第一章:数据库基本概念
  5. 动态新增表字段_制作动态的数据透视表(一):定义名称法创建数据透视表
  6. python递归函数详解-讲解Python中的递归函数
  7. php检查 session是否存在,检查sessionid已知的PHP会话是否处于活动状态
  8. c语言for循环26个英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  9. php使用webservivce_JWS服务开发使用指南
  10. python mockito arg_that_wqingxiao