我有一个kafka生产者,我不需要序列化一个键,只需要值。但是生产者配置需要“key.serializer”设置。
Map<String, Object> producerConfig = new HashMap<>();
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
当配置了一个实际上没有使用的随机设置时,我觉得很困惑。
有没有办法不设置“key.serializer”设置来表示没有密钥序列化?
没有选项可以指示密钥将是null
并且不需要key.serializer
。
KafkaProducer
不知道将传递的ProducerRecord
是否具有密钥和/或值被设置为null
,因此必须通过序列化器。
没有密钥就无法发送消息。即使您使用以下构造函数:ProducerRecord(String topic, V value)
。在幕后,它设置了一个关键(null
):
public ProducerRecord(String topic, V value) {
this(topic, null, null, null /* key */, value, null);
}