More info:
~~~~~~~
Digging into the source I found this test class:
org.apache.activemq.blob.DefaultBlobUploadStrategyTest
The code below show that the message is not sent via message.send() call.
It is uploaded.
Should I add this part to my code: strategy.uploadFile(msg, file); ?
As far as I understand I don't have to make an explicit call for this..
It should be handled by the msg.send() call - isn't it?
...
public void xtestUploadViaDefaultBlobUploadStrategy() throws Exception {
// 0. Initialise
File file = File.createTempFile("amq-data-file-", ".dat");
// lets write some data
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.append("Hello World!");
writer.close();
ActiveMQConnectionFactory factory = new
ActiveMQConnectionFactory(URI);
BlobTransferPolicy policy = factory.getBlobTransferPolicy();
ActiveMQBlobMessage msg = new ActiveMQBlobMessage();
msg.setMessageId(new MessageId());
// 1. Upload
DefaultBlobUploadStrategy strategy = new
DefaultBlobUploadStrategy(policy);
strategy.uploadFile(msg, file);
// 2. Download
msg.setURL(new URL(FILESERVER_URL + msg.getMessageId()));
InputStream in = msg.getInputStream();
long bytesRead = 0;
byte[] buffer = new byte[1024 * 1024];
while (true) {
int c = in.read(buffer);
if (c == -1) {
break;
}
bytesRead += c;
}
in.close();
TestCase.assertTrue(bytesRead == file.length());
// 3. Delete
strategy.deleteFile(msg);
}
...
Avishay
balderman wrote:
>
> Hi
> I am using ActiveMQ 5.1.
> I want to to use BlobMessage in order to send large amounts of data.
> When the consumer get the message and the below code is executed:
> inputStream = blobMessage.getInputStream();
> the inputStream is null.
> I have seen few posts regarding this issue but I could not understand what
> is the right way to do it.
> More info:
> 1) The message sender and the message consumer run on my PC.
> 2) The message broker run on a different machine.
> 3) I am using Spring JMS template. Here is a config snippet of the Sender:
> (I replaced some part of the IP with xyz - but this is the IP of the
> message broker)
> ...
> <bean id="jmsFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory"
> destroy-method="stop">
> <property name="connectionFactory">
> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
> <property name="brokerURL">
>
> <value>http://xyz.16.233.50:61618?jms.blobTransferPolicy.uploadUrl=http://xyz.16.233.50:8161/fileserver/</value>
> </property>
> </bean>
> </property>
> </bean>
> ...
> 4) Here is how I create the BlobMessage:
> blobMessage = activeMQSession.createBlobMessage(new File("path to the
> local file system here"));
> When I call blobMessage.getURL() I get null.
> If I create the message with a URL as argument:
> blobMessage = activeMQSession.createBlobMessage(new URL("url here"));
> the call to getURL() return a valid value.
> 5) I know there is an option to use BlobTransferPolicy. Do I have to use
> it or the default is good enough?
> Please advice.
>
> Thanks
>
> Avishay
>
--
View this message in context:
http://www.nabble.com/BlobMessage---How-to-make-it-work--tp17644495s2354p17644989.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.