Hi All

I am trying to transfer a large file over ActiveMQ using JMS Streams - the
transfer works fine however along with the file contents I also need to send
the file name to the recipient stream - I am trying the following code but
don't see the data appearing at the recipient end - saw several posts on the
same topic but none of the solutions work. Would appreciate a quick response
if someone has a working version of this scenario.

Sender
-------
FileInputStream in = new FileInputStream("C:\\InputFile.txt");

    String brokerURI = ActiveMQConnectionFactory.DEFAULT_BROKER_URL;
    ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(
      brokerURI);
    ActiveMQConnection connection = (ActiveMQConnection) connectionFactory
      .createConnection();
    connection.start();
    Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
    Queue destination = session.createQueue(QUEUE_NAME);
    Map<String, Object> properties = new HashMap<String, Object>(1);
    properties.put("testValue", "testValue");

    OutputStream out =
     
((ActiveMQConnection)connectionFactory.createConnection()).createOutputStream(destination,
        properties, ActiveMQMessage.DEFAULT_DELIVERY_MODE,
        ActiveMQMessage.DEFAULT_PRIORITY,
ActiveMQMessage.DEFAULT_TIME_TO_LIVE);

byte[] buffer = new byte[1024];
    while (true)
    {
      int bytesRead = in.read(buffer);
      if (bytesRead == -1)
      {
        break;
      }
      out.write(buffer, 0, bytesRead);
    }
    out.flush();
    out.close();

Receiver
---------
FileOutputStream out = new FileOutputStream(
      "C:\\ReceivedFile.txt");

    String brokerURI = ActiveMQConnectionFactory.DEFAULT_BROKER_URL;
    ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(
      brokerURI);
    ActiveMQConnection connection = (ActiveMQConnection) connectionFactory
      .createConnection();
    connection.start();
    Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
    // we want be be an exclusive consumer
    String exclusiveQueueName = QUEUE_NAME + "?consumer.exclusive=true";
    Queue destination = session.createQueue(exclusiveQueueName);
    InputStream in = connection.createInputStream(destination);

    ActiveMQInputStream aqInStream = (ActiveMQInputStream) in;
    ActiveMQMessage mqMessage = aqInStream.receive();
    System.out.println(mqMessage.getProperty("testValue"));
    System.out.println(aqInStream.getJMSProperties());
    
    // now write the file from ActiveMQ
    byte[] buffer = new byte[1024];
    while (true)
    {
      int bytesRead = in.read(buffer);
      if (bytesRead == -1)
      {
        break;
      }
      out.write(buffer, 0, bytesRead);
    }
    out.close();



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-Stream-Messaging-JMS-Properties-tp4661193.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to