## Producing or Consuming Messages (Common Tasks) Whether producing or consuming messages, DropboxMQ applications need to do some common tasks before getting to the nuts and bolts of producing or consuming. #### 1. Creating a Dropbox Creating a dropbox is as easy as creating a handful of directories in a shared directory known as the root directory. Still the preferred method for creating both queue and topic dropboxes is to use the `create-dropbox` script as described in the Administrative Guide. #### 2. Gathering the Jars DropboxMQ only requires three jars. `dropboxmq-0.5.jar`, `connector-api-1.5.jar` and `commons-logging-1.1.jar` are all included in the DropboxMQ download. #### 3. JNDI Lookups A JNDI lookup is the preferred method for retrieving `ConnectionFactory` and `Destination` objects. The first step of a JNDI lookup is creating a `InitialContext` and the environment properties provided to the `InitialContext` constructor are the primary mechanism for configuring DropboxMQ. See the complete list of JNDI properties on the Configuration Guide.
    Properties properties = new Properties();
    // properties.load() would probably be more suitable
    properties.setProperty( Context.INITIAL_CONTEXT_FACTORY,
            "net.sf.dropboxmq.jndi.InitialContextFactoryImpl" );
    properties.setProperty( "net.sf.dropboxmq.root", "/dropboxmq" );
    InitialContext initialContext = new InitialContext( properties );

    ConnectionFactory connectionFactory
            = (ConnectionFactory)initialContext.lookup( "ConnectionFactory" );
    Destination destination
            = (Destination)initialContext.lookup( "TestQueue1" );
#### 4. Creating a `Connection` and a `Session`
    Connection connection = connectionFactory.createConnection();
    Session session = connection.createSession(
            false, Session.AUTO_ACKNOWLEDGE );
## Producing a Message
    MessageProducer producer = session.createProducer( destination );
    TextMessage message = session.createTextMessage( "Hello World!" );

    producer.send( message );
After executing the above code, you will notice a new file in `/dropboxmq/TestQueue1/incoming/target`. The name of file will be something similar to `4.1140911283485000-1299715532.T`. For an explaination of each of the fields contained in the filename look here. Also note that the contents of the file are exactly the text of the `TextMessage` (`"Hello World!"`). ## Consuming a Message
    connection.start();

    MessageConsumer consumer = session.createConsumer( destination );
    TextMessage message = (TextMessage)consumer.receiveNoWait();

    System.out.println(
            message == null ? "No message found" : message.getText() );
That's it! You will notice that after executing this code the message file that was in the `target` directory is now in the `processed` directory. For a complete and compile-able listing of the code above look here.