001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.camel.example.jmstofile;
020
021 import org.apache.camel.component.jms.JmsComponent;
022 import javax.jms.ConnectionFactory;
023 import org.apache.activemq.ActiveMQConnectionFactory;
024 import org.apache.camel.CamelTemplate;
025 import org.apache.camel.CamelContext;
026 import org.apache.camel.Exchange;
027 import org.apache.camel.Processor;
028 import org.apache.camel.builder.RouteBuilder;
029 import org.apache.camel.impl.DefaultCamelContext;
030
031
032 /**
033 * An example class for demonstrating some of the basics behind camel
034 *
035 * This example will send some text messages on to a JMS Queue, consume them and
036 * persist them to disk
037 *
038 * @version $Revision: 529902 $
039 *
040 */
041 public class CamelJmsToFileExample {
042
043 public static void main(String args[]) throws Exception{
044 // START SNIPPET: e1
045 CamelContext context=new DefaultCamelContext();
046 // END SNIPPET: e1
047 // Set up the ActiveMQ JMS Components
048 // START SNIPPET: e2
049 ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
050 // note we can explicity name the component
051 context.addComponent("test-jms",JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
052 // END SNIPPET: e2
053 // Add some configuration by hand ...
054 // START SNIPPET: e3
055 context.addRoutes(new RouteBuilder(){
056
057 public void configure(){
058 from("test-jms:queue:test.queue").to("file://test");
059 // set up a listener on the file component
060 from("file://test").process(new Processor(){
061
062 public void process(Exchange e){
063 System.out.println("Received exchange: "+e.getIn());
064 }
065 });
066 }
067 });
068 // END SNIPPET: e3
069 // Camel template - a handy class for kicking off exchanges
070 // START SNIPPET: e4
071 CamelTemplate template =new CamelTemplate(context);
072 // END SNIPPET: e4
073 // Now everything is set up - lets start the context
074 context.start();
075 // now send some test text to a component - for this case a JMS Queue
076 // The text get converted to JMS messages - and sent to the Queue test.queue
077 // The file component is listening for messages from the Queue test.queue, consumes
078 // them and stores them to disk. The content of each file will be the test test we sent here.
079 // The listener on the file component gets notfied when new files are found ...
080 // that's it!
081 // START SNIPPET: e5
082 for(int i=0;i<10;i++){
083 template.sendBody("test-jms:queue:test.queue","Test Message: "+i);
084 }
085 // END SNIPPET: e5
086 Thread.sleep(1000);
087 context.stop();
088 }
089 }