JMS 流

功能 > 訊息功能 > JMS 流

已棄用

此功能已棄用,建議最終使用者不要使用它。此功能將在稍後的 ActiveMQ Classic 版本中移除。

有時候您需要以可靠的方式在網路上傳送真正龐大的檔案(數 GB)。JMS API 期望 JMS 客戶端能夠一次將訊息保留在記憶體中,因此傳送 > 1GB 的訊息最終會在客戶端端使用過多的 RAM。

為了解決這個問題,ActiveMQ Classic 支援常規的 InputStreamOutputStream 抽象概念,它們與常規的 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

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。 版權所有 © 2024,Apache 軟體基金會。 根據 Apache License 2.0 授權。