目录
- Kafka 生产者API 用法(代码演示)
- 生产者API 介绍
- 依赖:
- 介绍:
- 使用生产者API发送消息步骤:
- 生产者发送消息代码演示:
- 1、创建一个Maven项目
- 2、依赖
- 3、代码
- 4、演示结果
- 5、一些参数理解
Kafka 生产者API 用法(代码演示)
生产者API 介绍
依赖:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.6.1</version>
</dependency>
介绍:
生产者API 的核心类是 KafkaProducer,它提供了一个 send()方法 来发送消息,该方法需要传入一个 ProducerRecord<K,V>对象。
ProducerRecord 代表了一条消息,Kafka 的消息是包含了key、value、timestamp。
ProducerRecord定义了如下6个构造器:
- ProducerRecord(String topic, Integer partition, K key, V value):
创建一条发送到指定主题和指定分区的消息。
- ProducerRecord(String topic, Integer partition, K key, V value, Iterable<Header> headers):
创建一条发送到指定主题和指定分区的消息,且包含多个消息头。
- ProducerRecord(String topic, Integer partition, Long timestamp, K key, V value):
创建一条发送到指定主题和指定分区的消息,且使用给定的时间戳。
- ProducerRecord(String topic, Integer partition, Long timestamp, K key, V value, Iterable<Header> headers):
创建一条发送到指定主题和指定分区的消息、使用给定的时间戳,且包含多个消息头。
- ProducerRecord(String topic, K key, V value):
创建一条发送到指定主题的消息。
- ProducerRecord(String topic, V value):
创建一条发送到指定主题的、只带value,不带key的消息。
Kafka 的API 文档
使用生产者API发送消息步骤:
使用生产者API发送消息很简单,基本只要两步:
1、创建KafkaProducer对象,创建该对象时要传入Properties对象,用于对该生产者进行配置。
2、调用KafkaProducer对象的send()方法发送消息,调用ProducerRecord的构造器即可创建不同的消息。
3、发送完成后,关闭KafkaProducer对象。
为何 Kafka 的 KafkaProducer 需要一个 Properties 来创建KafkaProducer ?
因为Kafka的Producer API提供了海量的配置选项——如果你将这些配置选项每个都定义成方法,那将是一件让人无比痛苦的事情。
所以Kafka在设计该API时,就直接用了一个Properties来封装所有的配置属性。
生产者发送消息代码演示:
1、创建一个Maven项目
2、依赖
Producer API
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.6.1</version>
</dependency>
3、代码
可以到API文档查找消息发送者的示例:
KafkaProducer
如图:
创建一个消息生产者对象,发送20条消息到 test2 主题中去,前10条消息发送带key的消息,后10条消息发送不带key的消息。
4、演示结果
控制台显示发送消息成功,然后再打开小黑窗看具体命令
打开小黑窗,输入这些命令,查看指定主题下的所有消息:
▲ 监听 【指定主题】 的所有消息:
这个监听命令,运行后是一直存在的,会一直监听,有新消息会马上监听出来的。
kafka-console-consumer --bootstrap-server localhost:9092 ^
--topic test2 ^
--from-beginning ^
--property print.timestamp=true ^
--property print.key=true ^
--property print.offset=true ^
--property print.partition=true
可以看到,20条消息成功发送到 test2 主题的分区中,带key的消息发送到分区2中,不带key的消息发送到分区1中。
windows窗口的字符集是GBK,代码设置的是UTF-8,所以这边就乱码吗,这是正常现象。
5、一些参数理解
acks:Kafka的消息确认机制:
linger.ms:两条消息发送之间间隔等待的时间
linger.ms 是 Kafka中的一个配置属性,用于控制生产者在发送消息之前等待的时间。它表示发送消息的延迟时间(以毫秒为单位)。当生产者调用send()方法发送消息时,如果有未发送的消息存在,并且距离上一次发送消息的时间小于linger.ms,则会等待一段时间再发送