私はキューからEmployeeオブジェクトのリストを消費するスプリングブートamqpを使用しています。私のリスナメソッドは次のようになります。rabbitmqのレコードのリストを消費するジャクソンの設定
@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());
}
}
他のいくつかのジャクソンの設定があることをI従業員オブジェクトのリストを消費する必要がありますか?
ありがとうございます!私がかかります
サンプル入力JSONメッセージ:
[
{
"name" : "Jasmine",
"age" : "24",
"emp_id" : 1344
},
{
"name" : "Mark",
"age" : "32",
"emp_id" : 1314
}
]
お返事ありがとうございます。私はspring-boot-starter-amqp 1.4.1を使用しています。バージョン1.6.2のspring-rabbitを使用しています。 (どちらも最新です) – vin4yak
サンプル入力jsonも追加されました。 – vin4yak
ああ;あなたの設定は間違っています。あなたは 'Jackson2JsonMessageConverter'を使うべきです - 私は数分でアップデートを投稿します。 –