是否可以将 JMS TextMessage 转换为 BytesMessage?
Is it possible to convert a JMS TextMessage to a BytesMessage?
我目前正在使用 IBM MQ 并接收消息。该消息作为 javax.jms.TextMessage
发送,我无法控制它。发送的消息很大,我需要我的应用程序在一定内存量内 运行。因此,我不想将整个消息体加载到内存中。无论如何 convert/accept 消息是否为 javax.jms.BytesMessage
?我的目标是基本上使用输出流并将数据发送到文件,这样我就不必将其保存在内存中并保存 space.
@JmsListener(...)
public void receiveMessage(TextMessage m){
String s = m.getText() // taking lot of memory
}
从技术上讲, 可以转换消息,但如果您在内存受限的环境中进行转换,几乎肯定不会对您有所帮助。
客户端上的任何转换过程都将涉及读取 javax.jms.TextMessage
的正文 String
并将其作为 byte[]
复制到 javax.jms.BytesMessage
的正文。但是,您将同时在内存中拥有 2 个数据副本,这似乎正是您要避免的。
如果您有另一个可以访问更多内存的环境,那么您可以编写一个应用程序,其 唯一 工作是转换这些消息,然后将它们发送到您的内存所在的新队列- 有限的应用程序可以读取它们。
你的问题有些奇怪。
我在 Raspberry Pi 4 上有一个 Raspberry Pi 4 with IBM MQ v9.2.1 installed and I created 2 queue managers on the Raspberry Pi 4. I installed MQ Visual Edit for Raspberry Pi(运行 本地)。我可以使用 MQ Visual Edit 针对本地 运行 队列管理器获取和放置消息(本地)。我尝试了 1MB、10MB 和 100MB 的邮件大小,但没有 运行 内存不足。
注意:MQ Visual Edit 是一个 Java/MQ 应用程序。
所以,如果一个简单的 Raspberry Pi 就可以处理它,那么我想知道你的配置。
您是否使用“-Xmx”的 JVM 参数来增加 JVM 将使用的最大内存量?你为什么不尝试使用“-Xmx1024”,看看它是否运行正常。
我目前正在使用 IBM MQ 并接收消息。该消息作为 javax.jms.TextMessage
发送,我无法控制它。发送的消息很大,我需要我的应用程序在一定内存量内 运行。因此,我不想将整个消息体加载到内存中。无论如何 convert/accept 消息是否为 javax.jms.BytesMessage
?我的目标是基本上使用输出流并将数据发送到文件,这样我就不必将其保存在内存中并保存 space.
@JmsListener(...)
public void receiveMessage(TextMessage m){
String s = m.getText() // taking lot of memory
}
从技术上讲, 可以转换消息,但如果您在内存受限的环境中进行转换,几乎肯定不会对您有所帮助。
客户端上的任何转换过程都将涉及读取 javax.jms.TextMessage
的正文 String
并将其作为 byte[]
复制到 javax.jms.BytesMessage
的正文。但是,您将同时在内存中拥有 2 个数据副本,这似乎正是您要避免的。
如果您有另一个可以访问更多内存的环境,那么您可以编写一个应用程序,其 唯一 工作是转换这些消息,然后将它们发送到您的内存所在的新队列- 有限的应用程序可以读取它们。
你的问题有些奇怪。
我在 Raspberry Pi 4 上有一个 Raspberry Pi 4 with IBM MQ v9.2.1 installed and I created 2 queue managers on the Raspberry Pi 4. I installed MQ Visual Edit for Raspberry Pi(运行 本地)。我可以使用 MQ Visual Edit 针对本地 运行 队列管理器获取和放置消息(本地)。我尝试了 1MB、10MB 和 100MB 的邮件大小,但没有 运行 内存不足。
注意:MQ Visual Edit 是一个 Java/MQ 应用程序。
所以,如果一个简单的 Raspberry Pi 就可以处理它,那么我想知道你的配置。
您是否使用“-Xmx”的 JVM 参数来增加 JVM 将使用的最大内存量?你为什么不尝试使用“-Xmx1024”,看看它是否运行正常。