我有一个用Spring Boot 2.0.2编写的Kafka客户应用程序。当我在侦听器中收到消息时,出现以下错误:
Caused by: org.springframework.messaging.converter.MessageConversionException: failed to resolve class name. Class not found [com.test.demo.domain.Account]; nested exception is java.lang.ClassNotFoundException: com.test.demo.domain.Account
Run Code Online (Sandbox Code Playgroud)
生产者中对象的类名称是“ com.test.demo.domain.Account ”,但是在使用者中我有不同的包和类名称。
当我重新包装消费者的类名以匹配生产者时,一切正常。但是,我相信我不必这样做。
有人知道这个问题吗?
====更新====
我的生产者代码:
@Bean public ProducerFactory<String, Account> accountProducerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class.getName());
return new DefaultKafkaProducerFactory<>(configProps); }
@Bean public KafkaTemplate<String, Account> accountKafkaTemplate() {
ProducerFactory<String, Account> factory = accountProducerFactory();
return new KafkaTemplate<>(factory); }
Run Code Online (Sandbox Code Playgroud)
消费者代码:
public ConsumerFactory<String, Account> accountConsumerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
configProps.put(ConsumerConfig.GROUP_ID_CONFIG, groupName); …Run Code Online (Sandbox Code Playgroud)