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.