java - 为 Spring Boot 的传入消息添加缺少的 ContentType
问题描述
我有 Spring Boot 应用程序
它正在从 ActiveMQ 接收 Json 格式的消息
@Component class Receiver {
@JmsListener(destination = "queue")
public void receiveMessage(BusMessage message) {
System.out.println("Received <" + message + ">");
}
问题是,有时 Json 可以在没有正确标题的情况下到达
在这种情况下,我得到异常
org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [cam.melexis.minipcs2socketioserver.BusMessage] for org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@38bd4ff9, failedMessage=org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@38bd4ff9
一种解决方案是将消息作为字符串获取并反序列化
@Component class Receiver {
@JmsListener(destination = "queue")
public void receiveScannerMessage(Message message, Session session) {
System.out.println("Received <" + message + ">");
}
但我想做一些更优雅的事情
简化所有@JmsListener
为了让我在春季的学习曲线更加弯曲:)
知道所有消息将以 Json 格式到达,我可以为所有传入消息添加缺少的标头吗?
还是存在另一种“更好”的方式?
解决方案
这创造了一份工作
@EnableJms
@Configuration class JmsListenerConfig implements JmsListenerConfigurer {
Logger logger = LoggerFactory.getLogger(Receiver.class);
@Bean
public DefaultMessageHandlerMethodFactory handlerMethodFactory() {
DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(messageConverter());
return factory;
}
@Bean
public MessageConverter messageConverter() {
return new MappingJackson2MessageConverter();
}
@Override
public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
registrar.setMessageHandlerMethodFactory(handlerMethodFactory());
}
}
但我不知道如何
也许有人可以帮助我吗?
推荐阅读
- sql - 从多个属性选择的 XML 中读取
- gunicorn - 为什么 gunicorn 在旋转日志文件时不将日志写入重新打开的文件?
- java - 来自 findbugs-sec-plugin 的误报 Spring LDAP
- google-sheets - 谷歌表格 - 将某些列转换为行
- javascript - HTML onclick JavaScript 函数调用,在参数列表后得到 SyntaxError: missing )
- c# - System.FormatException:反序列化 xml 时输入字符串的格式不正确
- algorithm - 查找图的最大连通分量的大小
- redis - Redis 每秒创建新连接并丢弃旧连接
- visual-studio-code - 为什么 vs code 在我的文件搜索前加上哈希?IE '#'
- python - 为什么(Kraken)模块在我的项目中不起作用?