package camelinaction; import static org.apache.camel.component.jms.JmsComponent.jmsComponentClientAcknowledge; import javax.jms.ConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; public class OrderRouterWithSedaTest extends CamelTestSupport { @Test public void testPrintFile() throws Exception { getMockEndpoint("mock:accounting").expectedMessageCount(1); getMockEndpoint("mock:production").expectedMessageCount(1); // should have one incoming message for each queue assertMockEndpointsSatisfied(); } protected CamelContext createCamelContext() throws Exception { CamelContext camelContext = super.createCamelContext(); ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); camelContext.addComponent("jms", jmsComponentClientAcknowledge(connectionFactory)); return camelContext; } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { // load file orders from src/data into the SEDA queue from("file:src/data?noop=true").to("seda:incomingOrders"); // content-based router from("seda:incomingOrders") .choice() .when(header("CamelFileName").endsWith(".xml")) .to("seda:xmlOrders") .when(header("CamelFileName").endsWith(".csv")) .to("seda:csvOrders"); from("seda:xmlOrders?multipleConsumers=true").to("jms:accounting"); from("seda:xmlOrders?multipleConsumers=true").to("jms:production"); // test that our route is working from("jms:accounting").process(new Processor() { public void process(Exchange exchange) throws Exception { System.out.println("Accounting received order: " + exchange.getIn().getHeader("CamelFileName")); } }).to("mock:accounting"); from("jms:production").process(new Processor() { public void process(Exchange exchange) throws Exception { System.out.println("Production received order: " + exchange.getIn().getHeader("CamelFileName")); } }).to("mock:production"); } }; } }