Hi I reproduced the issue and logged a JIRA to improve this https://issues.apache.org/jira/browse/CAMEL-5149
On Sat, Apr 7, 2012 at 11:05 AM, Claus Ibsen <[email protected]> wrote: > Hi > > What version of Camel are you using? > > It looks like your bean does not get the @Produce injected from the > route when you do > .bean(LongRunningBean.class, "startLongOperation") > > > > On Fri, Apr 6, 2012 at 3:04 PM, Borut Bolčina <[email protected]> wrote: >> Hello, >> >> I am trying to marry crawler4j with Camel and having some trouble sending >> messages out of my bean. The producer is not instantiated - I get NPE. >> >> My goal is to send each crawled page (html in string variable) to the next >> stage in the route. If I simplify the crawler with a demo bean: >> >> public class LongRunningBean { >> @Produce(uri = "direct:crawler") >> protected MyListener producer; >> List<String> outMessages = Arrays.asList("m1", "m2", "m3"); >> public void startLongOperation() throws InterruptedException { >> >> for (String message : outMessages) { >> String response = producer.sendMessage(message); // NPE >> Thread.sleep(2000); >> } >> } >> } >> >> and the >> >> public interface MyListener { >> String sendMessage(String message); >> } >> >> and my test route(s): >> >> public class LongRunningBeanTest extends CamelTestSupport { >> >> @Override >> protected RouteBuilder createRouteBuilder() throws Exception { >> return new RouteBuilder() { >> @Override >> public void configure() throws Exception { >> from("direct:start") >> .bean(LongRunningBean.class, "startLongOperation") >> .to("log:bb.webcraft.crawler?level=DEBUG"); >> from("direct:crawler") >> .to("log:bb.webcraft.crawler?level=DEBUG"); >> } >> }; >> } >> >> @Test >> public void testLongRun() throws Exception { >> template.sendBody("direct:start", "myDummyMessage"); >> assert(true); >> } >> } >> >> I am getting NPE: >> >> [2012/04/06 14:23:26.478] ERROR [o.a.c.p.DefaultErrorHandler:log]: Failed >> delivery for (MessageId: ID-BOBB-50119-1333715006068-0-1 on ExchangeId: >> ID-BOBB-50119-1333715006068-0-2). Exhausted after delivery attempt: 1 >> caught: java.lang.NullPointerException >> java.lang.NullPointerException: null >> at >> bb.webcraft.crawler.LongRunningBean.startLongOperation(LongRunningBean.java:19) >> ~[test-classes/:na] >> >> >> My goal is not to wait until the long running bean (crawler) >> ends processing and then route an enormous number of objects in one >> Exchange message, but send each crawled page's content to the next stage in >> the route as soon as it is processed. >> >> I saw only examples with activemq as producer's uri. Is this the trick? >> >> And one more thing - I don't need a return message as in: >> >> String response = producer.sendMessage(message); >> >> How to use the @InOnly or something else? >> >> Thanks, >> Borut > > > > -- > Claus Ibsen > ----------------- > CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com > FuseSource > Email: [email protected] > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ -- Claus Ibsen ----------------- CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com FuseSource Email: [email protected] Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
