Package net.lr.tutorial.karaf.camel.jpa2jms

Source Code of net.lr.tutorial.karaf.camel.jpa2jms.Jpa2JmsRoute

/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.lr.tutorial.karaf.camel.jpa2jms;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

import net.lr.tutorial.karaf.camel.jpa2jms.model.Person;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.converter.jaxb.JaxbDataFormat;

/**
* Watches the person table in the db. For each row found there the camel route is triggered with
* a Person object as message body. Then this object is marshalled to xml using jaxb and sent to the
* jms queue person.
*
* The second route is just to show it worked. It listens on the jms queue person and writes the xml content to the log
*/
public class Jpa2JmsRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        JaxbDataFormat df = createPersonJaxbDataFormat();

        from("jpa://net.lr.tutorial.karaf.camel.jpa2jms.model.Person?consumer.delay=2000").id("jpa2jms")
        .onException(Exception.class).maximumRedeliveries(3).backOffMultiplier(2).handled(true).to("file:error").end()
        .transacted("PROPAGATION_REQUIRED")
        .marshal(df)
        .to("log:person marshalled")
        .bean(new ExceptionDecider())
        .to("jms:person");
       
        from("jms:person").id("jms2log")
        .onException(Exception.class).maximumRedeliveries(3).backOffMultiplier(2).handled(true).to("file:error").end()
        .transacted("PROPAGATION_REQUIRED")
        .convertBodyTo(String.class)
        .to("log:personreceived");
    }

    private JaxbDataFormat createPersonJaxbDataFormat() throws JAXBException {
        JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
        JaxbDataFormat df = new JaxbDataFormat(jaxbContext);
        df.setContextPath(Person.class.getPackage().toString());
        return df;
    }
}
TOP

Related Classes of net.lr.tutorial.karaf.camel.jpa2jms.Jpa2JmsRoute

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.