deprecated

Icon

This feature is deprecated, and end users is encouraged to not use it. This feature will be removed in a later ActiveMQ release.

Sometimes you need to send truly massive files (many Gb) around the network in a reliable manner. The JMS API expects JMS clients to be able to keep a message in memory at one time, so sending > 1Gb messages around ends up using way too much RAM on the client side.

To solve this problem ActiveMQ supports regular InputStream and OutputStream abstractions which work with regular JMS producers and consumers.

This allows you to use the familar streams from Java to send or receive messages of any size at all (providing your file system can handle them (smile) while keeping a low memory overhead.

For Users of 4.2

Icon

If you are using 4.2 onwards of ActiveMQ we highly recommend you try out Blob Messages which offers a more flexible mechanism for dealing wtih massive files and fully supports out-of-band transfer using HTTP/FTP as well as allowing external resources to be sent around the JMS network.

Using JMS Streams

To use the streams just create an input or output stream depending on if you are reading or writing using the connection.createInputStream() or
connection.createOutputStream() methods.

e.g.

Or to consume a large message

There are overloaded createInputStream/createOutputStream methods which support additional paramateres to be passed.

For further reference see the javadoc.

Note:
The counterpart classes in AMQ 3.x are :

  • JMSInputStream
  • JMSOutputStream
© 2004-2011 The Apache Software Foundation.
Apache ActiveMQ, ActiveMQ, Apache, the Apache feather logo, and the Apache ActiveMQ project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram