Problem resolved using

context.stopRoute("direct-idempotent");
....
context.startRoute("direct-idempotent");

I suspect that how the thread is paused/resume when using startCamel() &
stopCamelContext() is different from using stop/start route

On Fri, May 27, 2016 at 12:25 PM, Charles Moulliard <ch0...@gmail.com>
wrote:

> 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
>
>


-- 
Charles Moulliard
Apache Committer & PMC / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io

Reply via email to