我有一个kakfa生产者,我不需要序列化一个键,只是值。但是producer配置需要“key.serializer”设置。
Map<String, Object> producerConfig = new HashMap<>();
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
当配置了一个随机设置而实际上没有使用时,我会感到困惑。
有没有办法不设置“key.serializer”设置来表示没有序列化的键?
2条答案
按热度按时间wvt8vs2t1#
kafka代理存储字节数组。所以我认为你必须连载。
来自生产者的主题消息应该转换成字节数组(字节流,字节流)并存储在代理的分区中。然后它被反序列化到消费者。
消息是一个键,值对。所以键和值都是必需的。
js81xvg62#
没有选项指示该键将
null
以及key.serializer
不需要。KafkaProducer
不知道ProducerRecord
如果键和/或值设置为null
,因此必须传递序列化程序。没有钥匙是不可能发送信息的。即使使用以下构造函数:
ProducerRecord(String topic, V value)
. 在现场后面有一把钥匙(null
):