packageorg.apache.activemq.exchange.file;importjava.io.BufferedOutputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjavax.jms.Connection;importjavax.jms.ConnectionFactory;importjavax.jms.Destination;importjavax.jms.JMSException;importjavax.jms.Message;importjavax.jms.MessageConsumer;importjavax.jms.Session;importjavax.jms.StreamMessage;importorg.apache.activemq.ActiveMQConnectionFactory;publicclassConsumer {/***@paramargs*/publicstaticvoidmain(String[] args)throwsJMSException, IOException {
ConnectionFactory factory=newActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection=factory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createTopic("EXCHANGE.FILE");
MessageConsumer consumer=session.createConsumer(destination);booleanappended=false;try{while(true) {
Message message=consumer.receive(5000);if(message==null) {continue;
}if(messageinstanceofStreamMessage) {
StreamMessage streamMessage=(StreamMessage) message;
String command=streamMessage.getStringProperty("COMMAND");if("start".equals(command)) {
appended=false;continue;
}if("sending".equals(command)) {byte[] content=newbyte[4096];
String file_name=message.getStringProperty("FILE_NAME");
BufferedOutputStream bos=null;
bos=newBufferedOutputStream(newFileOutputStream("c:/"+file_name, appended));if(!appended) {
appended=true;
}while(streamMessage.readBytes(content)>0) {
bos.write(content);
}
bos.close();continue;
}if("end".equals(command)) {
appended=false;continue;
}
}
}
}catch(JMSException e) {throwe;
}finally{if(connection!=null) {
connection.close();
}
}
}
}