- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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&wireFormat.maxFrameSize=104857600&transport.transformer=jms"/>
关于java - 基于 Spring Boot AMQP 的 JmsListener 在 TextMessage 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419999/
我使用 Spring 的 @JmsListener (spring-jms-4.3.4.RELEASE.jar) 使用以下代码从 ActiveMQ 接收消息: @Component public cl
我有一个定义 2 个 JMSListener 的类。 1 个监听器用于客户端从使用 JMS 的服务器接收的消息 MyMessage1。另一个是 MyMessage2,它是由另一个程序生成的,而不是使用
我正在尝试使用具有 JMSListener 的 spring boot 启动一个应用程序以连接到外部 ActiveMQ,即使 ActiveMQ 已关闭,此应用程序也需要启动。 我在连接中使用了故障转移
我目前有一个 JMSListener,如下所示。它使用属性文件中的值选择器。这工作得很好。 @JmsListener(destination = "myQueueDest", select
我有一个 JMS 生产者发送两种消息:业务逻辑和心跳消息。目前,两者都由同一个接收器处理,但我现在尝试通过使用选择器为每个接收器提供专用的类。我遇到的问题是,每当我将选择器添加到接收器时,它就会停止接
我有一个 Spring 应用程序,它具有用 Spring 的 @JmsListener 注释的方法。该应用程序部署在多个节点上。在某些特定节点上,我需要禁用 JMS 监听器,以便它不会将消息从队列中拉
我正在使用 Spring 和 Jaxb 来监听 JMSQueue,然后将 JMS 消息解码到一个 Java 对象中。然后我希望在我的@JmsListener 端点上获得该 Java 对象。但是我得到了
我正在开发一项服务,在该服务中我监听队列、反序列化接收到的消息并将它们保存到数据库 (Oracle)。大致: @JmsListener(destination="some-destination")
我正在制作一个应用程序原型(prototype),以测试 future 应用程序的 Spring 消息传递功能。 我知道我们需要的一件事是在同一应用程序中处理来自 activemq 的主题和队列。因此
我目前正在致力于将 IBM Webshere 应用程序迁移到 Spring Boot。 作为其中的一部分,有一个 MDB 类需要转换为 @JmsListener。该 MDB 有一个监听多个队列的方法。
我使用的是 Spring Boot 版本 1.3.2。我正在使用 @JmsListener 来使用来自 activemq 的消息来获取我使用 JmsTemplate 创建/生成的消息。这是代码: @J
我正在遵循在方法级别使用 JmsListener 注释来使用 Spring JMS 的指南。我认为它可以工作,但由于我无法调试在该方法中设置的断点,或者 log4j 日志记录不起作用,甚至简单的 Sy
在这篇文章中,Garry Russell 解释了如何以编程方式创建多个 KafkaListener 来监听多个主题。.[这个设置实际上对我来说很成功] Kafka Spring: How to cre
我可以将多种类型的实例写入给定的目的地,例如: JmsTemplate template = ... Alpha alpha = new Alpha(...); Beta beta = new Bet
我希望能够从 application.properties 设置 @JMSlistener 目标 我的代码是这样的 @Service public class ListenerService {
有没有具体的方法可以做到这一点?我试图在这里找到解决方案,但找不到我需要的东西。我有一个 Spring Boot 应用程序,它将从命令行接受多个参数。有问题的参数是队列名称(即目的地)。它可以是我们众
几个月前我在这篇文章中问了基本相同的问题:How should a Spring JMS listener handle a message with an empty payload? ,但我得到的
我正在尝试基于@JmsListener 注释创建发布-订阅示例:https://github.com/lkrnac/book-eiws-code-samples/tree/master/05-jms/
我的代码中有一个 Spring JmsListener。它接收并使用了 2 天的消息,但是在这 2 天之后它突然没有收到来自外部 activemq 的消息。但是,它的队列中有一些待处理的消息。当我重置
在我的应用程序中,我有消息从一个队列移动到另一个队列,并且我想在日志中添加消息 ID。我试图弄清楚是否可以在实际处理消息之前拦截消息并在 MDC 字段中设置消息 ID,以便我可以在所有队列中跟踪此消息
我是一名优秀的程序员,十分优秀!