Walk through an Example CodeThis mini-guide takes you through the source code of a simple example Camel can be configured either by using Spring or directly in Java - which this example does We start with creating a CamelContext - which is a container for Components, Routes etc: CamelContext context=new DefaultCamelContext();
There is more than one way of adding a Component to the CamelContext. You can add components implicitly - when we set up the routing - as we do here for the FileComponent: context.addRoutes(new RouteBuilder(){ public void configure(){ from("test-jms:queue:test.queue").to("file://test"); // set up a listener on the file component from("file://test").process(new Processor(){ public void process(Exchange e){ System.out.println("Received exchange: "+e.getIn()); } }); } }); or explicitly - as we do here when we add the JMS Component: ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); // note we can explicity name the component context.addComponent("test-jms",JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); The above works with any JMS provider. If we know we are using ActiveMQ we can use an even simpler form using the activeMQComponent() method camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false")); In normal use, an external system would be firing messages or events into directly into Camel through one if its Components but we are going to use the CamelTemplate CamelTemplate template =new CamelTemplate(context);
Next you must start the camel context. If you are using Spring to configure the camel context this is automatically done for you; though if you are using a pure Java approach then you just need to call the start() method camelContext.start(); This will start all of the configured routing rules. So after starting the CamelContext, we can fire some objects into camel: for(int i=0;i<10;i++){ template.sendBody("test-jms:queue:test.queue","Test Message: "+i); } What happens ?From the CamelClient The File FileComponent will take messages of the Queue, and save them to a directory named test. Every message will be saved in a file that corresponds to its destination and message id. Finally, we configured our own listener in the Route - to take notifications from the FileComponent and print them out as text. Thats it! |