我有一个kakfa生产者,在这里我不需要序列化键,只需序列化值即可。但是生产者配置需要“ key.serializer”设置。
Map<String, Object> producerConfig = new HashMap<>();
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
当配置了实际上没有使用的随机设置时,我感到困惑。
有没有办法不设置“ key.serializer”设置来表示没有序列化的密钥?
答案 0 :(得分:1)
没有选项表明密钥将为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);
}
答案 1 :(得分:1)