gpt4 book ai didi

java - 基于 Spring Boot AMQP 的 JmsListener 在 TextMessage 上失败

转载 作者:行者123 更新时间:2023-12-01 06:02:26 28 4
gpt4 key购买 nike

我的 Spring Boot 应用程序在从 ActiveMQ 代理检索 TextMessage 类型的 JMS 消息时遇到问题。

如果消费者尝试从代理检索消息,它无法自动将消息转换为 TextMessage,而是将其视为 ByteMessage。有一个 JmsListener 应该从队列中读取消息作为 TextMessage:

...
@JmsListener(destination = "foo")
public void jmsConsumer(TextMessage message) {
...

JmsListener 会生成如下所示的警告,并删除消息:

org.springframework.jms.listener.adapter.ListenerExecutionFailedException: Listener method could not be invoked with incoming message
Endpoint handler details:
Method [public void net.aschemann.demo.springboot.jmsconsumer.JmsConsumer.jmsConsumer(javax.jms.TextMessage)]
Bean [net.aschemann.demo.springboot.jmsconsumer.JmsConsumer@4715f07]; nested exception is org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [javax.jms.TextMessage] for org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@7c49d298, failedMessage=org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@7c49d298
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:118) ~[spring-jms-5.1.4.RELEASE.jar:5.1.4.RELEASE]

我提取了一个小示例应用程序 调试问题:https://github.com/ascheman/springboot-camel-jms

现实生活中的生产者是一个使用 Apache Camel 的商业应用程序。因此,我几乎无法更改/定制生产者。我尝试构建一个显示相同行为的示例生成器。

我可以以某种方式调整消费者以将消息视为TextMessage吗?

此外:有没有办法直接在 Spring 中以编程方式从消息中检索附加 AMQP 属性?当然,我仍然可以将消息读取为 ByteMessage 并尝试解析属性。但我正在寻找一种由任何 Spring API 支持的更干净的方法。 Spring @Headers 注释到目前为止没有帮助。

最佳答案

在我遵循@AndyWilkinson的评论,在activemq.xml中的transportConnector上添加transport.transformer选项后​​,我曾经遇到过与问题所有者相同的问题如下,问题解决。

<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;transport.transformer=jms"/>

关于java - 基于 Spring Boot AMQP 的 JmsListener 在 TextMessage 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com