Hi, I'm facing a strange issue that I don't understand. I can execute this unit test case when I start the Test within IntelliJ but it will fail with mvn clean test -Dtest= CamelIdempotentTest
As you can see, I use the parent method stopCamelContext() and startCamelContext() to stop and start the CamelContext. The test fails at the end as the direct consumer is not available when called by the producerTemplate Is there a workaround ? org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://data-insert]. Exchange[Message: 333,18-05-2016,Claus,Ibsen,incident camel-333,this is a report incident for camel-333,cib...@gmail.com,+111 10 20 300] at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68) at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375) at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343) at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233) at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343) at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:201) at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:128) Code public class CamelIdempotentTest extends CamelSpringTestSupport { @EndpointInject(uri="direct:data-insert") ProducerTemplate template; @EndpointInject(uri="mock:result") MockEndpoint mockResult; @Test public void testStopStartCamelRoute() throws Exception { mockResult.expectedMessageCount(1); template.requestBodyAndHeader("111,22-04-2016,Claus,Ibsen,incident camel-111,this is a report incident for camel-111,cib...@gmail.com,+111 10 20 300","CamelRecord",1); stopCamelContext(); Connection conn = null; try { Class.forName("org.h2.Driver"); conn = DriverManager.getConnection("jdbc:h2:mem:idempotentReport"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from CAMEL_MESSAGEPROCESSED"); while (rs.next()) { Assert.assertEquals("1",rs.getString("messageId")); Assert.assertEquals("DirectConsumer",rs.getString("processorName")); } } catch(Exception e) { System.out.print("Something happened"); } finally { conn.close(); } try { template.start(); template.requestBodyAndHeader("111,22-04-2016,Claus,Ibsen,incident camel-111,this is a report incident for camel-111,cib...@gmail.com,+111 10 20 300","CamelRecord",1); } catch(CamelExecutionException e) { System.out.println("&&&&& The consumer endpoint is not started so we can't use it"); } startCamelContext(); context().getRoute("direct-idempotent").getConsumer().start(); template.requestBodyAndHeader("333,18-05-2016,Claus,Ibsen,incident camel-333,this is a report incident for camel-333,cib...@gmail.com,+111 10 20 300","CamelRecord",1); mockResult.assertIsSatisfied(); } Regards, -- Charles Moulliard Apache Committer & PMC / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io