没有密钥序列化器的 Kafka Producer

Dan*_* P. 1 serialization apache-kafka

我有一个 kakfa 生产者,我不需要序列化键,只需序列化值。但生产者配置需要“key.serializer”设置。

Map<String, Object> producerConfig = new HashMap<>();
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
Run Code Online (Sandbox Code Playgroud)

当配置了实际上未使用的随机设置时,我发现它很令人困惑。

有没有办法不设置“key.serializer”设置来表示没有密钥序列化?

war*_*iak 5

没有选项表明该密钥将被需要nullkey.serializer不需要。

KafkaProducer不知道ProducerRecord将传递的 key 和/或 value 是否设置为null,因此必须传递序列化器。

没有密钥就无法发送消息。即使您使用以下构造函数:ProducerRecord(String topic, V value)。它在幕后设置了一个键 ( null):

public ProducerRecord(String topic, V value) {
    this(topic, null, null, null /* key */, value, null);
}
Run Code Online (Sandbox Code Playgroud)