Hello, thanks for the time to look into it!
So in Camel version 2.9.2 the above LongRunningBean will send out messages as expected? What about the @InOnly? When sending the messages out I do not need/expect a return/confirmation message. How will I achieve this? And, is there an ETA on 2.9.2? Thanks! -borut Dne 07. april 2012 11:44 je Claus Ibsen <claus.ib...@gmail.com> napisal/-a: > 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 <claus.ib...@gmail.com> > 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 <borut.bolc...@gmail.com> > 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: cib...@fusesource.com > > 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: cib...@fusesource.com > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ >