kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解
首先介绍一下 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 生产者详解相关推荐
- Maven精选系列--三种仓库详解
转载自 Maven精选系列--三种仓库详解 仓库分类 1.本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings ...
- View系列 (三) — Measure 流程详解
Measure 流程详解 一.概述 二.单一 View 的测量流程 1. 流程图 2. 源码分析 三.ViewGroup 的测量流程 1. 流程图 2. 源码分析 一.概述 测量过程分为 View的m ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
目录 一.分词器 1. 认识分词器 1.1 Analyzer 分析器 1.2 如何测试分词器 2. 内建的字符过滤器(character filter) 2.1 HTML过滤字符过滤器(HTML S ...
- kafka key的作用_kafka系列(kafka端到端原理分析)
Kafka 端到端源码解析 Kafka的场景 Kafka概念 Topic 创建与删除 Topic状态流转 一些问题 Topic分区初始化选择 kafka producer解析 1. 发送流程 2. 分 ...
- 人脸识别系列三 | MTCNN算法详解上篇
前言 我们前面分享了PCA,Fisher Face,LBPH三种传统的人脸识别算法,Dlib人脸检测算法.今天我们开始分享一下MTCNN算法,这个算法可以将人脸检测和特征点检测结合起来,并且MTCNN ...
- Linux Rootkit 系列三:实例详解 Rootkit 必备的基本功能
本文所需的完整代码位于笔者的代码仓库:https://github.com/NoviceLive/research-rootkit. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试 ...
- 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解
Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...
- linux rootkit 端口复用,Linux Rootkit系列三:实例详解 Rootkit 必备的基本功能
前言鉴于笔者知识能力上的不足,如有疏忽,欢迎纠正. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试! 概要 在 上一篇文章中笔者详细地阐述了基于直接修改系统调用表 (即 sys_c ...
- OpenCV系列(三):Mat详解
Mat类是OpenCV最基本的一个数据类型,它可以表示一个多维的多通道的数组.Mat常用来存储图像,包括单通道二维数组--灰度图,多通道二维数组--彩色图.当然也可以用来存储点云,直方图等等,对于高维 ...
最新文章
- Windoes普通用户使用管理员下安装的软件
- boost::mpi模块从组创建的传播者的测试
- zbb20171108 tomcat 性能优化
- 总结尚硅谷的视频springboot视频
- PHP 常用数据库操作
- vb 计算圆环上每一点的坐标_工程土方量计算比较分析
- 深入入门正则表达式(java) - 1 - 入门基础
- 写一段最短的代码,用上js所有关键字
- Android measure过程分析
- 企业运行助推器——力软工作流引擎
- 坚持写博客对我们有什么好处
- vue自定义封装全局组件与使用
- 计算机硬盘分区类型,常见磁盘分区格式的区别是什么?
- 1.Review of Linear Algebra
- 使用C++ 编写嵌入式应用程序
- 阿里云 icp 备案流程(光速入门篇)
- 基于微信小程序的乐团团购系统设计与实现-计算机毕业设计源码+LW文档
- 「引流方法」微商如何获得精准引流的八大方法
- JVM是怎么和操作系统交互的?
- 一名优秀的管理者应具有那些能力?
热门文章
- dev c++ Boost库的安装
- 湖北省仙桃市2021年高考成绩查询,2021年4月湖北仙桃市自考成绩查询时间和有效期是多久?...
- 【深度学习】深入理解Batch Normalization批归一化
- 元组可以直接添加进数据库吗_数据库篇-第一章:数据库基本概念
- 动态新增表字段_制作动态的数据透视表(一):定义名称法创建数据透视表
- python递归函数详解-讲解Python中的递归函数
- php检查 session是否存在,检查sessionid已知的PHP会话是否处于活动状态
- c语言for循环26个英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
- php使用webservivce_JWS服务开发使用指南
- python mockito arg_that_wqingxiao