Hi All

I am trying to figure out this issue for a POC we are doing with ActiveMQ.
We are using Output and InputStreams to copy files across from producer to
consumer. The files get copied acrosss correctly however we also need to
pass some meta data in the form of file names so that the file can be named
correctly at the recepient end.

The following is some sample code which I am using, appreciate some feedback
if someone has a working solution for this issue.

Sender
-------
FileInputStream in = new FileInputStream(
      "C:\\Temp\\FileName.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 myMap = new HashMap();
    myMap.put("invocation", "invocation");
    ActiveMQOutputStream out =
(ActiveMQOutputStream)connection.createOutputStream(destination, myMap,
ActiveMQMessage.DEFAULT_DELIVERY_MODE, ActiveMQMessage.DEFAULT_PRIORITY,
ActiveMQMessage.DEFAULT_TIME_TO_LIVE); 
    // now write the file on to ActiveMQ
    byte[] buffer = new byte[1024];
    while (true)
    {
      int bytesRead = in.read(buffer);
      if (bytesRead == -1)
      {
        break;
      }
      out.write(buffer, 0, bytesRead);
    }
    out.close();

Receiver
---------
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);
String myString = IOUtils.toString(in);
FileOutputStream out = new FileOutputStream(
      "C:\\Temp\\NeedTargetFileName.txt");
out.write(myString.getBytes());

Thanks                



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Sending-Meta-Data-over-Active-MQ-Channel-for-Stream-Messages-tp4661318.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to