【发布时间】:2021-09-27 14:43:28
【问题描述】:
我目前正在使用 IBM MQ 并接收消息。该消息以javax.jms.TextMessage 的形式发送,我无法控制它。发送的消息非常大,我需要我的应用程序在一定的内存量内运行。因此,我不想将整个消息体加载到内存中。反正有没有将消息转换/接受为javax.jms.BytesMessage?我的目标是基本上使用输出流并将数据发送到文件,这样我就不必将其保存在内存中并节省空间。
@JmsListener(...)
public void receiveMessage(TextMessage m){
String s = m.getText() // taking lot of memory
}
【问题讨论】:
-
另外,您是否有来自 OutOfMemoryErrors 的堆转储?如果是这样,是什么占用了大部分内存?
-
我相信主要是TextMessage对象
-
您是否尝试过消除 Spring 并直接使用 JMS API?这可能会释放足够的内存来做你需要的事情。
-
这里有什么反馈吗?
-
您好,很抱歉,我试图为您的答案投票,但显然我没有足够的积分来做到这一点。目前,我正在尝试您不使用弹簧启动应用程序的其他建议。谢谢!