java - org.springframework.messaging.converter.MessageConversionException:无法从 [org.apache.qpid.jms.message.JmsMessage] 转换为 [java.lang.String]
问题描述
Reading message from Azure service bus:
org.springframework.messaging.converter.MessageConversionException: Cannot convert from [org.apache.qpid.jms.message.JmsMessage] to [java.lang.String] for org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@39945b52, failedMessage=org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@39945b52
java code:
导入 org.apache.qpid.jms.message.JmsMessage;
@Component 公共类 AzureserviceBusListner { private final static String QUEUE_NAME = "teste01";
@JmsListener(目的地 = QUEUE_NAME,containerFactory = "jmsListenerContainerFactory")
public void receive(String msg) {
System.out.println("Azure received message:::: "+msg);
}
}
解决方案
您可以发送 JmsTextMessage 而不是 JmsMessage:
//Autowire a JmsTemplate first, and then
jmsTemplate.send("<your-destination-name>", new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessagemessage = session.createTextMessage("message payload");
return message;
}
});
我很好奇这里需要发送 JmsMessage 而不是子类?我认为您还可以在发送/接收消息时根据需要使用消息转换器将 JmsMessage 转换为子类。
此外,您是否使用 azure-spring-boot-starter-servicebus-jms 如果是这样,在消息转换器中将 JmsMessage 转换为其他 JAVA 类型将不起作用,因为该库不支持为 JmsListener 自定义消息转换器。
推荐阅读
- yii2 - Yii2读写分离在主从配置中无法连接从服务器
- javascript - 未捕获的 ReferenceError:未定义 sha1
- react-router-dom - 在 react-admin 中将 noLayout 道具添加到自定义路由列表时收到警告
- javascript - toLocaleString() 在 Pug 视图中无法正常工作
- visual-studio - IIS7 服务器应用程序池遇到致命错误
- javascript - 获取具有键值的对象中的特定键深度
- php - Twig - 打印没有空值的数组
- android - 从位置坐标获取地址并将其添加到文本视图
- security - 我们是否应该对唯一且随机的信息进行加盐处理
- ios - 为 AVPlayer 更新时 UISlider 跳转