我在使用 spring-jms 模块从 RabbitMQ 转换消息时遇到一些问题。以前,我使用Rest API终结点发送消息,此终结点将消息发送到RabbitMQ队列并使用 @JmsListener 方法对其进行处理。
此行为在内部添加了一个字段来确定Java类型,该字段由Spring库管理。但是,现在我想避免进行Rest API调用,因为没有必要,我可以直接将消息发送到RabbitMQ。
问题是当spring尝试为 @JmsListener 参数转换JMS消息时。我没有在消息上设置类型,因为发件人不需要该信息,但是现在我不能直接转换它,因为 MappingJackson2MessageConverter 想要一个属性。
如何避免此问题?我希望能够处理所有消息而无需知道所有“发件人”中的类型。
消息转换器bean:
@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}
侦听器示例代码:
@JmsListener(concurrency = "listener.concurrency", destination = "queue.name", containerFactory = "container.factory")
public void processFile(MyDtoClass dto) {
....
}
答案 0 :(得分:0)
子类化转换器并覆盖ScreenManager
以返回所需的类型...
getJavaTypeForMessage()