kafka消息对象ProducerRecord

457 阅读1分钟

构造消息的对象ProducerRecord介绍

public class ProducerRecord<K, V> {

    private final String topic;
    private final Integer partition;
    private final Headers headers;
    private final K key;
    private final V value;
    private final Long timestamp;
	xxx
}

topic与partition字段分别代表消息要发往的主题和分区号。

headers字段是消息的头部,大多用来设定一些与应用相关的信息,如无需要,也可以不用设置

key用来指定消息的键,它不仅是消息的附加信息,还可以用来计算分区号进而可以让消息发往特定的分区。前面提及消息以主题进行归类,而这个key可以让消息再进行二次归类,同一个key的消息会被划分到同一个分区中。有key的消息还可以支持日志压缩功能。

value是消息体,一般不为空,如果为空则表示特定的消息-墓碑消息。

timestamp只的是时间戳,它有CreateTime和LogAppendTime两种类型,前者表示消息的创建时间,后者表示消息追加到日志文件的时间。

其中topic和value是必填项。

KafkaProducer是线程安全的,可以在多个线程中共享单个kafkaProducer,也可以将KafkaProducer实例进行池化来供其它线程调用。