【发布时间】:2013-01-22 12:09:39
【问题描述】:
在下面的JBoss/HornetQ user manual page 中,您可以看到 HornetQ 如何使用 java.io.InputStream 提供一种将数据流式传输到队列的消息的机制。给出了相同代码的 JMS 版本。有没有人遇到过使用 IBM MQSeries / WebsphereMQ 的等价物?
假设我有大量数据要放在 JMS 消息中,这对我来说只是一个字节流。在 Hornet 示例中,仅在发送消息时才读取流,因此如果是,例如 FileInputStream,那么我们只需要足够的内存来缓冲一大块字节。我可以使用 javax.jms.BytesMessage 发送字节块并使用 BytesMessage 缓冲它们。这样做的问题是 BytesMessage (com.ibm.msg.client.jms.internal.JmsBytesMessageImpl) 的 IBM 实现必须缓存它们,直到消息被发送,如果这是大量数据,那就是一个问题。更糟糕的是,虽然我只发送字节,但 IBM 实现似乎保留了重复的副本,一个在 BytesArrayOutputStream 中,另一个在 DataOutputStream 中。
【问题讨论】:
-
我已将其发布在 MQSeries BB 上。见mqseries.net/phpBB2/viewtopic.php?p=346958#346958。那里有一些答案。由于我不是 MQSeries 的实现者,所以我将把它留给他们中的一个来回答。