JMS 流
已棄用
此功能已棄用,建議最終使用者不要使用它。此功能將在稍後的 ActiveMQ Classic 版本中移除。
有時候您需要以可靠的方式在網路上傳送真正龐大的檔案(數 GB)。JMS API 期望 JMS 客戶端能夠一次將訊息保留在記憶體中,因此傳送 > 1GB 的訊息最終會在客戶端端使用過多的 RAM。
為了解決這個問題,ActiveMQ Classic 支援常規的 InputStream 和 OutputStream 抽象概念,它們與常規的 JMS 生產者和消費者一起工作。
這使您可以使用 Java 中熟悉的流來傳送或接收任何大小的訊息(前提是您的檔案系統可以在保持低記憶體開銷的情況下處理它們)。
針對 4.2 的使用者
如果您使用 ActiveMQ Classic 的 4.2 或更高版本,我們強烈建議您試用 Blob 訊息,它提供更靈活的機制來處理大型檔案,並完全支援使用 HTTP/FTP 的頻外傳輸,以及允許在 JMS 網路周圍傳送外部資源。
使用 JMS 流
要使用流,只需根據您是讀取還是寫入,使用 connection.createInputStream() 或
connection.createOutputStream() 方法建立輸入或輸出流。
例如:
ActiveMQConnection connection = ...;
Destination destination = new ActiveMQQueue("FOO.BAR");
OutputStream out = connection.createOutputStream(destination);
// write the file to out
out.close();
或者要消費大型訊息
ActiveMQConnection connection = ...;
Destination destination = new ActiveMQQueue("FOO.BAR");
InputStream in = connection.createInputStream(destination)
// read the stream...
in.close();
有重載的 createInputStream/createOutputStream 方法,它們支援傳遞其他參數。
如需進一步參考,請參閱 javadoc。
注意
AMQ 3.x 中的對應類別是
- JMSInputStream
- JMSOutputStream