配置BLOB Transfer Policy,可以在發送方的連接URI上設置,如:
"tcp://192.168.1.106:61679?jms.blobTransferPolicy.uploadUrl=http://192.168.1.10
6:8171/fileserver/"
Sending BlobMessages,有幾種方式:
1:如果你發送到的文件或者URL存在,比如發給共享文件系統或者是Web server上的web應用,那麼你可以使用如下方式:BlobMessage message = session.createBlobMessage(new URL("http://some.shared.site.com");
producer.send(message);
2:也可以在客戶端動態的創建文件流,如下:
BlobMessage message = session.createBlobMessage(new File("/foo/bar");
或者:
InputStream in = ...;
BlobMessage message = session.createBlobMessage(in);
Blob文件消息發送端:
public class BlobMessageSender { public static void main(String[] args) throws Exception{ ConnectionFactory connectionFactory = new ActiveMQConnectionFactory ("tcp://127.0.0.1:61616?jms.blobTransferPolicy.uploadUrl=http://127.0.0.1:8161/fileserver/"); Connection connection = connectionFactory.createConnection(); connection.start(); ActiveMQSession session = (ActiveMQSession)connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("my-queue2"); MessageProducer producer = session.createProducer(destination); BlobMessage message = session.createBlobMessage(new File(System.getProperty("user.dir") + File.separator + "pom.xml")); producer.send(message); session.commit(); session.close(); connection.close(); } }
Receiving BlobMessages示例:
if (message instanceof BlobMessage) {BlobMessage blobMessage = (BlobMessage) message;
InputStream in = blobMessage.getInputStream();
// process the stream...
}
public class BlobMessageReceiver { public static void main(String[] args) throws Exception{ ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); Connection connection = cf.createConnection(); connection.start(); final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("my-queue2"); MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(new MessageListener() { public void onMessage(Message message) { if (message instanceof BlobMessage) { BlobMessage blobMessage = (BlobMessage) message; try { InputStream in = blobMessage.getInputStream();// process the stream... byte[] bs = new byte[in.available()]; in.read(bs); in.close(); System.out.println(new String(bs)); session.commit(); } catch (Exception e) { e.printStackTrace(); } } } }); } }