gpt4 book ai didi

java - Kafka 消费者 - 在反序列化之前读取消息头

转载 作者:行者123 更新时间:2023-12-03 08:21:49 25 4
gpt4 key购买 nike

有没有办法在反序列化之前读取消息头?

我写了下面的代码,但是我被迫在这里反序列化,有什么方法可以不反序列化吗?

    while (true) {

ConsumerRecords<String, String> consumerRecords = consumer.poll(Duration.ofSeconds(1));
for (ConsumerRecord<String, String> consumerRecord : consumerRecords) {
for (Header header : consumerRecord.headers()) {
if (header.key().equals("my header")) {
String data = "\n New record received .. \n" +
" Value: " + consumerRecord.value() +
" Topic: " + consumerRecord.topic() +
" Header: " + header.key() +
" Partition: " + consumerRecord.partition();

logger.info(data);
}
}
}
}

最佳答案

您需要编写自己的反序列化器实现,以便能够在数据有效负载之前访问 header

或者...

any way to not deserialize

将反序列化器类设置为 ByteArrayDeserializer 而不是 StringDeserializer。

然后,手动进行反序列化,

for (ConsumerRecord<byte[], byte[]> consumerRecord : consumer.poll(Duration.ofSeconds(1))) {
for (Header header : consumerRecord.headers()) {
...

}
String s = new String(consumerRecord.value(), "UTF-8"); // for example
}

关于java - Kafka 消费者 - 在反序列化之前读取消息头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67656436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com