获取异常'Cannot find any routes with this RouteBuilder reference: RouteBuilderRef[routebuilderOne]'



当我尝试根据配置连接路由构建器时,我Cannot find any routes with this RouteBuilder reference: RouteBuilderRef[routebuilderOne]出现异常。

路由生成器 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);
     }
}

路由生成器 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);
     }
}

骆驼上下文文件

<?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>

属性文件中autoStartupRouteOne,autoStartupRouteTwo

的值
 autoStartupRouteOne = false
 autoStartupRouteTwo = true

有没有其他方法可以实现基于条件的路由选择?

您需要

@Component提供一个 id,而不是使用类名作为 id。Java 类名应以大写开头。

不确定弹簧注释是否可以做到这一点,但也许你可以做@Component(name = "routebuilderOne")或其他事情。

我遇到了同样的异常。不同的是,我的代码一直在工作,然后似乎随机停止。我们可能已经升级了骆驼版本,但我不确定。无论哪种方式,为了修复它,我只是停止了 karaf,然后使用 clean 选项运行启动脚本。之后一切都加载得很好。希望这对其他人有所帮助。

相关内容

最新更新