我正在使用 spring boot amqp,我将在其中使用队列中的 Employee 对象列表。我的侦听器方法如下所示:
@RabbitListener(queues = "emp_queue")
public void processAndPortEmployeeData(List<Employee> empList) {
empList.forEach(emp -> { some logic })
}
但是,当我尝试使用该消息时,我得到一个类转换异常:由于某种原因,我得到了一个 LinkedHashMap。
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.integration.domain.Employee
如果我将侦听器方法更改为使用单个员工对象,则它可以正常工作,并且我正在使用以下杰克逊配置:
@Configuration
@EnableRabbit
public class RabbitConfiguration implements RabbitListenerConfigurer {
@Bean
public MappingJackson2MessageConverter jackson2Converter() {
return new MappingJackson2MessageConverter();
}
@Bean
public DefaultMessageHandlerMethodFactory handlerMethodFactory() {
DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(jackson2Converter());
return factory;
}
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
registrar.setMessageHandlerMethodFactory(handlerMethodFactory());
}
}
我需要做一些其他杰克逊配置来使用员工对象列表吗?
非常感谢!
我将使用的示例输入 Json 消息:
[
{
"name" : "Jasmine",
"age" : "24",
"emp_id" : 1344
},
{
"name" : "Mark",
"age" : "32",
"emp_id" : 1314
}
]