【发布时间】:2019-03-05 09:15:24
【问题描述】:
我有 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
让我在 Spring 的学习曲线更加弯曲 :)
知道所有消息将以 Json 格式到达,我可以在所有传入消息中添加缺少的标头吗?
还是存在另一种“更好”的方式?
【问题讨论】:
标签: java json spring-boot content-type