kafka producer batch 发送消息
2024-10-19 21:28:17
1. 使用 KafkaProducer 发送消息,是按 batch 发送的,producer 首先把消息放入 ProducerBatch 中:
org.apache.kafka.clients.producer.internals.ProducerBatch
2. KafkaProduer 类中有一个 Thread 属性,负责 IO,发送和接收数据:
this.sender = new Sender(logContext,
client,
this.metadata,
this.accumulator,
maxInflightRequests == 1,
config.getInt(ProducerConfig.MAX_REQUEST_SIZE_CONFIG),
acks,
retries,
metricsRegistry.senderMetrics,
Time.SYSTEM,
this.requestTimeoutMs,
config.getLong(ProducerConfig.RETRY_BACKOFF_MS_CONFIG),
this.transactionManager,
apiVersions);
String ioThreadName = NETWORK_THREAD_PREFIX + " | " + clientId;
this.ioThread = new KafkaThread(ioThreadName, this.sender, true);
this.ioThread.start();
Sender 类实现了 Runnable 接口,封装了具体的逻辑,发送消息和接收响应都在这个类中。
// 发送消息
long pollTimeout = sendProducerData(now);
// 接收响应
client.poll(pollTimeout, now);
3. 执行回调
org.apache.kafka.clients.producer.internals.Sender#completeBatch()
最新文章
- PCA、ZCA白化
- libevent源码分析(一)
- 读javascript高级程序设计05-面向对象之创建对象
- android学习笔记54——ContentProvider
- Windows系统下安装Beautiful Soup4的步骤和方法
- 如何引用CSS样式表
- 用Python实现的一个简单的随机生成器
- Java编程杂记
- C# 计算器 如果设置键盘输入的监听事件
- 高性能双端js模板
- Java 之复合赋值运算符
- WinForm 控件(下)
- Tomcat、JBOSS、WebSphere、WebLogic、Apache等技术概述
- Vue多元素过渡
- Guake!
- 【Android】[Problem]-";Waiting for target device to come online";.
- ugui SetParent在安卓上一个诡异bug
- shell中与运算 cut切分行 if while综合在一起的一个例子
- Tomcat篇
- Linux基础之 ---目录结构