Я использую 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
}
]