没有密钥序列化程序的kafka生产者

2jcobegt  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(265)

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

Map<String, Object> producerConfig = new HashMap<>();
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);

当配置了一个随机设置而实际上没有使用时,我会感到困惑。
有没有办法不设置“key.serializer”设置来表示没有序列化的键?

wvt8vs2t

wvt8vs2t1#

kafka代理存储字节数组。所以我认为你必须连载。
来自生产者的主题消息应该转换成字节数组(字节流,字节流)并存储在代理的分区中。然后它被反序列化到消费者。
消息是一个键,值对。所以键和值都是必需的。

js81xvg6

js81xvg62#

没有选项指示该键将 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);
}

相关问题