Blob 訊息

功能 > 訊息功能 > Blob 訊息

Blob 訊息

現今一個常見的需求是傳送大量的檔案,以便讓消費者進行處理。人們希望利用訊息代理的功能,例如可靠的、交易式的佇列負載平衡與智慧路由,同時還能處理巨大的邏輯檔案。

因此,我們引入了 BlobMessage API,它允許以某些帶外傳輸機制傳送大量的 BLOB(二進制大型物件)。可能的帶外機制可以是 HTTP、FTP、SCP 或其他點對點協定。

現在 ActiveMQSession 上有了新的 createBlobMessage() 方法,您可以用它來傳送 BLOB。

傳送 BlobMessages

您可以透過 JMS 網路傳送 URL,例如存在於某些共享檔案系統或 Web 伺服器上的檔案或 URL,使用以下程式碼:

BlobMessage message = session.createBlobMessage(new URL("http://some.shared.site.com");
producer.send(message);

或者,如果您在用戶端動態建立檔案或串流,您可能需要將檔案上傳到代理或某些伺服器 (Jetty、FTP、WebDav 或其他)。在這種情況下,您可以使用以下其中一種方法:

// lets use a local file
BlobMessage message = session.createBlobMessage(new File("/foo/bar");
producer.send(message);

// lets use a stream
InputStream in = ...;
BlobMessage message = session.createBlobMessage(in);
producer.send(message);

接收 BlobMessages

BlobMessage 是一個常規的 JMS 訊息,因此它可以像其他訊息一樣被接收…

public class MyListener implements MessageListener {
  public void onMessage(Message message) {
    if (message instanceof BlobMessage) {
      BlobMessage blobMessage = (BlobMessage) message;
      InputStream in = blobMessage.getInputStream();

      // process the stream...
    }
  }
}

設定 BLOB 傳輸策略

您可以在 ActiveMQConnectionFactory、ActiveMQConnection 或 ActiveMQSession 上明確設定 BlobTransferPolicy。通常它是透過 Java 程式碼或 Spring 在 Factory 上完成的。

您可以使用連線設定 URI,透過 URI 來設定這些內容。

例如,您可以連線到代理,同時指定要使用的 uploadUrl,如下所示:

tcp://127.0.0.1:61616?jms.blobTransferPolicy.uploadUrl=http://foo.com

Apache, ActiveMQ, Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。版權所有 © 2024, The Apache Software Foundation。根據Apache 授權條款 2.0授權。