Searching...
Sunday, 11 August 2013

Apache Camel + ActiveMQ Example

06:27

Apache Camel

Apache Camel is a simple routing engine which provides the implementation of Enterprise Integration Pattern using Java or other Domain specific language. See more about  Apache Camel  and Enterprise Integration Patterns. In this example we are going to create a Message producer class to push messages in to ActiveMQ messaging system and Creating a simple Router to copy all messages from one Queue to another Queue upon starting Camel Context.

Goals

Setup ActiveMQ 

Create a JMS Message Producer to send messages

Create a Camel Router and Start Camel context to Route Messages

Note: In this example we are not using any spring apis

Setup ActiveMQ Messaging System

1. Download activemq from http://activemq.apache.org/download-archives.html

2. Extract activemq zip file and start ActiveMQ (Click on activemq.bat file)

3. Check activemq console using http://localhost:8161/admin  (Use default credentials admin/admin to login)

Create a Message Producer to send Messages


package com.vinod.test;

import javax.jms.ConnectionFactory;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class MessageProducerExample {
    public static void main(String[] args) {
        try {

            // Create a ConnectionFactory

            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin",
                    ActiveMQConnection.DEFAULT_BROKER_URL);

            // Create a Connection

            Connection connection = connectionFactory.createConnection();

            connection.start();

            // Create a Session

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // Create the destination

            Destination destination = session.createQueue("testMQ");

            // Create a MessageProducer from the Session to the Queue

            MessageProducer producer = session.createProducer(destination);

            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            // Create a messages

            TextMessage message = session.createTextMessage("Helloworld");

            //sending message
            producer.send(message);
            session.close();
            connection.close();

            System.out.println("Message sent");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
 

 

Run Message Producer and check the Queue

Run the above program and see messages are going to the activemq, it provides the console to see the message details

(http://localhost:8161/admin)


image

 

Create a Camel class to route messages

Here we are just consuming the above message and putting in to another queue

 

package com.vinod.test;

import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.impl.DefaultCamelContext;

public class CamelActiveMQExample {
    public static void main(String[] args) {
        try {
            CamelContext context = new DefaultCamelContext();
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin",
                    ActiveMQConnection.DEFAULT_BROKER_URL);
            context.addComponent("test-jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
            context.addRoutes(new RouteBuilder() {
                public void configure() {
                    from("test-jms:queue:testMQ").log("${body}").to("test-jms:queue:testMQDestination");
                }
            });
            context.start();
            Thread.sleep(1000);
            context.stop();
            System.out.println("Done");
        } catch (Exception e) {

            e.printStackTrace();
        }

    }

}
 
 

Run Camel route

Now we can check the ActiveMQ console and see new Queue has been created and all the messages are moved from testMQ to testMQDestination queue


image

Reference

Apache Camel

Done!!! 

Download example

https://github.com/kkvinodkumaran/camel

0 comments: