问题
I am getting the exception Cannot find any routes with this RouteBuilder reference: RouteBuilderRef[routebuilderOne]
when I am trying to wire the route builder based on configuration.
Class file of Route Builder 1
import org.apache.camel.spring.SpringRouteBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class RoutebuilderOne extends SpringRouteBuilder {
@Value("${routebuilder.stream.one}")
private boolean autoStartupRouteOne;
@Override
public void configure() throws Exception {
from(source1).autoStartup(autoStartupRouteOne).split().method("splitLogic","splitMethod").to(destination1);
}
}
Class file of Route builder 2
import org.apache.camel.spring.SpringRouteBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class RoutebuilderTwo extends SpringRouteBuilder {
@Value("${routebuilder.stream.two}")
private boolean autoStartupRouteTwo;
@Override
public void configure() throws Exception {
from(source2).autoStartup(autoStartupRouteTwo).to(destination2);
}
}
Camel context file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<routeBuilder ref="routebuilderOne"/>
<routeBuilder ref="routebuilderTwo"/>
</camelContext>
<context:component-scan
base-package="com.hurix.routebuilders" />
</beans>
Values for autoStartupRouteOne,autoStartupRouteTwo
as in the property file
autoStartupRouteOne = false
autoStartupRouteTwo = true
Is there any other way to achieve the conditional based route selection ?
回答1:
You need to give the @Component
a id, and not use the class name as the id. A java class name should start with upper case.
Not sure if the spring annotation can do that, but maybe you can do @Component(name = "routebuilderOne")
or something.
回答2:
I was getting the same exception. The difference was that my code had been working and then seemed to randomly stop. We may have upgraded camel versions but I'm not sure. Either way, to fix it I simply stopped karaf and then ran the start script with the clean option. Everything loaded fine after that. Hope this helps someone else.
来源:https://stackoverflow.com/questions/27897726/getting-the-exception-cannot-find-any-routes-with-this-routebuilder-reference