[英]Why can my Kafka Consumer not read the message from my Kafka Producer?
我是 Kafka 的新手,我只是想在我的 node.js 项目中创建一个 Kafka Producer——使用kafkajs
包——它可以向我的 Spring Boot 应用程序发送一个字符串。
这是我的制作人的样子:
router.put('/kafka/test', async (req, res) => {
try {
await producer.connect();
console.log('kafka connected');
await producer.send({
topic: 'kafkaStringTest',
messages: [
{ value: "{ \"test\": \"This is my test string\" }" }
]
});
...
} catch (err) {
res.status(500).json({ message: err.message });
}
这是我的消费者的样子:
@Service
public class KafkaConsumer {
@KafkaListener(topics = "kafkaStringTest")
public void consume(String message) {
System.out.println("Consumed message: " + message);
}
}
当我请求/kafka/test
端点时,消费者抛出以下错误:
Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [org.apache.kafka.common.serialization.StringDeserializer] to [java.lang.String] for GenericMessage [payload=org.apache.kafka.common.serialization.StringDeserializer@44e58368, headers={kafka_offset=9, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@42a9ac04, kafka_timestampType=CREATE_TIME, kafka_receivedPartitionId=0, kafka_receivedTopic=kafkaStringTest, kafka_receivedTimestamp=1671019397060, kafka_groupId=***}]
我该如何解决这个错误?
正如文档中指定的那样:
此机制需要在您的一个 @Configuration 类和侦听器容器工厂上使用 @EnableKafka 注释,后者用于配置底层的 ConcurrentMessageListenerContainer。 默认情况下,需要一个名称为 kafkaListenerContainerFactory 的 bean。
检查文档
在此工厂中,您需要将 StringDeserializer 设置为消费者属性。 (我假设你在实现 Kafka 生产者时使用了 StringSerializer )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.