Hi all, I have written a service bean which can add and remove Routes dynamically and I'd like to know if my approach was "kosher" in terms of best practices. It's not exactly pretty, but it does work. Here are the two classes:
@Component public class RssRouter implements CamelContextAware { protected CamelContext camelContext; RssRouteBuilder rssRouteBuilder; final Logger log = Logger.getLogger(this.getClass()); public void addFeed(String uri) throws Exception { log.info("Adding feed '" + uri + "'"); uri = "rss://" + uri; camelContext.addRouteDefinition(rssRouteBuilder.getRouteDefinition(uri)); } public void removeFeed(String uri) throws Exception { log.info("Removing feed '" + uri + "'"); uri = "rss://" + uri; camelContext.removeRoute(uri); } public CamelContext getCamelContext() { return camelContext; } public void setCamelContext(CamelContext camelContext) { this.camelContext = camelContext; } public void setRssRouteBuilder(RssRouteBuilder rssRouteBuilder) { this.rssRouteBuilder = rssRouteBuilder; } } public class RssRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { // Do nothing here since we are creating routes dynamically } RouteDefinition getRouteDefinition(String uri) { return from(uri + "?splitEntries=false&consumer.initialDelay=0"). marshal().rss(). to("mock:result"); } } Thanks! Jeff