我在模块中使用 spring boot。我有一个包含多个子模块的父项目。
当我使用 Contructor Autowiring 配置路由时,Camel 路由无法启动。
我得到 Total 0 routes, 其中 0 已启动
当像这样启动构造函数时。
private final ScanProcessor scanProcessor;
private final ScheduleProcessor scheduleProcessor;
private final TagProcessor tagProcessor;
private final LatestScanProcessor latestScanProcessor;
private final RabbitMqService rabbitMqService;
@Autowired
public DashboardRoute(ScanProcessor scanProcessor,
ScheduleProcessor scheduleProcessor,
TagProcessor tagProcessor,
LatestScanProcessor latestScanProcessor,
RabbitMqService rabbitMqService){
this.scanProcessor = scanProcessor;
this.scheduleProcessor = scheduleProcessor;
this.tagProcessor = tagProcessor;
this.latestScanProcessor = latestScanProcessor;
this.rabbitMqService = rabbitMqService;
}
@Override
public void configure() throws Exception {
from(CONSUME_SCHEDULE_ROUTE)
.routeId("consume-schedule")
.process(scheduleProcessor); // no strings
}
当我不 Autowiring 任何 bean 并像这样删除路由时,整个事情就有效了。
from(CONSUME_SCHEDULE_ROUTE)
.routeId("consume-schedule")
.process("scheduleProcessor") // notice this is a string
camel 是否支持 spring route Constructor Autowiring ?我是否需要采取一些额外的配置步骤来正确处理这个问题?当我重构类名时,我更喜欢以这种方式直接链接 bean,它可以正常链接回来。
最佳答案
我尝试了与您类似的示例并且它工作正常。您可以确保在路由类以及所有处理器类和服务类中都有@Compoent。
您也可以尝试在局部变量上添加@Autowired。 (构造函数应该可以正常工作。这只是确保您的构造函数正常工作的额外步骤)
@Component
@ServletComponentScan(basePackages = "com.example.camel")
public class ServiceRoutes extends RouteBuilder {
@Autowired
private ScanProcessor scanProcessor;
@Autowired
private ScheduleProcessor scheduleProcessor;
@Autowired
private TagProcessor tagProcessor;
@Autowired
private LatestScanProcessor latestScanProcessor;
@Autowired
private RabbitMqService rabbitMqService;
@Override
public void configure() throws Exception {
from(CONSUME_SCHEDULE_ROUTE)
.routeId("consume-schedule")
.process(scheduleProcessor);
}
}
希望这对您有所帮助。
关于java - Autowiring 构造函数时 Camel 没有路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753768/