Actually, after further experimenting, my "reconfgure" worked, but only after the CamelContext was started. So the implementation was to just have an initial route consuming from a direct:, then, when an message comes in, I dynamically create and add new routes, each headed by a unique instance of "quartz://", who's name corresponds to the customer-id, so each customer has their own crontab.
Thanks, Chris On Sat, May 18, 2013 at 3:42 AM, Claus Ibsen <[email protected]> wrote: > The RouteBuilder is just java code, so I suggest to add getter/setter > to a MyCronRouteBuilder class which extends RouteBuilder. Then you can > create a new instance of that, and then use the setter to set your > options. > > And in the configure method you can use the getter to get your > options, which you can use in the DSL to set the options you want. > > On Fri, May 17, 2013 at 6:53 PM, Chris Wolf <[email protected]> wrote: >> I need to schedule multiple cron jobs in a route. The number and >> schedules are not known at compile-time, >> so I need to programatically configure the route at run-time. An >> abbreviated version of my non-working >> attempt is shown below. I created an anonymous RouteBuilder, in which >> I created a route. >> >> After, calling context.addRoutes(...), but before starting the >> context, I want to programmatically >> tweak the route definition, as shown by the "reconfigure(...)" >> function, unfortunately any attempt >> to lookup the route I just created fails - no routes found. Why? I >> suspect that the route may actually >> need to be started for it's initialization to complete, so should I >> start it, then stop or suspend, then >> programmatically modify? >> >> >> BTW, I already checked my copy of "Camel In Action" and >> http://camel.apache.org/faq.html but >> no answers for me there.... >> >> context.addRoutes(new RouteBuilder() { >> public void configure() { >> from("quartz://demo-1/{{custId}}?cron=* * * * * ? 2036").routeId("sched") >> .process(new Processor() { >> @Override >> public void process(Exchange exchange) throws Exception { >> // Do something at cron trigger time >> } >> }).id("sched.pipline") >> .to("log:demo-1?showAll=true&multiline=true&level=INFO"); >> } >> }); >> >> reconfigure("sched.pipline", context); >> >> void reconfigure(String downstreamNodeId, CamelContext context) { >> for (Route route : context.getRoutes()) { // getRoutes() >> returns zero-length list - why???? >> String id = route.getId(); // null - why??? >> List<Service> svcs = route.getServices(); >> Consumer c = route.getConsumer(); >> } >> Route sched = context.getRoute("sched"); // null > > > > -- > Claus Ibsen > ----------------- > www.camelone.org: The open source integration conference. > > Red Hat, Inc. > FuseSource is now part of Red Hat > Email: [email protected] > Web: http://fusesource.com > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen
