You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:30:11