如何通过Spring Boot的JMS监听器获取ActiveMQTextMessage纯文本内容
解决Spring Boot JMS监听器获取Topic纯文本消息的问题
嘿,我懂你现在的困扰——用Spring Boot的JMS监听器订阅Topic时,收到的是一整个ActiveMQTextMessage对象,里面塞满了各种元数据,但你只想要其中的纯文本内容对吧?别担心,有两种简单的方式可以搞定这个问题:
方式一:直接接收String类型(推荐)
Spring的JMS自动配置会帮你自动完成消息转换,只要在监听器方法里把参数类型指定为String,它就会直接把TextMessage里的纯文本内容提取出来给你,不用手动处理整个消息对象:
import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class TopicMessageListener { @JmsListener(destination = "topic://testt1234") public void handlePlainTextMessage(String messageContent) { // 这里直接拿到你想要的纯文本啦 System.out.println("收到纯文本消息:" + messageContent); } }
方式二:通过TextMessage对象提取文本
如果你需要同时处理消息的其他属性(比如消息ID、过期时间等),可以先接收TextMessage对象,再调用getText()方法获取纯文本:
import javax.jms.TextMessage; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class TopicMessageListener { @JmsListener(destination = "topic://testt1234") public void handleTextMessage(TextMessage message) { try { String plainText = message.getText(); System.out.println("收到纯文本消息:" + plainText); // 如果需要其他元数据,也可以在这里获取 String messageId = message.getJMSMessageID(); System.out.println("消息ID:" + messageId); } catch (Exception e) { // 处理可能的异常,比如消息转换失败 e.printStackTrace(); } } }
这样你就不用再面对那些冗长的ActiveMQTextMessage输出啦,直接拿到你需要的纯文本内容。
内容的提问来源于stack exchange,提问作者mridul
相关产品推荐
相关产品推荐

