295.2. SCR 中的 AbstractCamelRunner 的生命周期
-
当组件的配置策略和强制引用满足 SCR 调用
activate ()时。这会通过以下调用链创建并设置 CamelContext:activate ()prepare ()createCamelContext ()setupPropertiesComponent ()configure ()setupCamelContext ()。最后,上下文被调度到在AbstractCamelRunner.START_DELAY中使用runWithDelay ()定义的延迟后启动。 -
当 Camel 组件(
ComponentResolver服务、要准确)注册时,SCR 调用gotCamelComponent'()',后者通过同样的AbstractCamelRunner.START_DELAY进一步调度/延迟 CamelContext 启动。这样做会导致 CamelContext 等待所有 Camel 组件被加载,或者它们之间有足够差距。相同的逻辑会导致在我们添加更多 Camel 组件时再次尝试失败到启动 CamelContext。 -
当 Camel 组件取消注册 SCR 调用
lostCamelComponent'()' 时。这个调用什么都不做。 -
当导致调用
activate ()的要求之一时,SCR 将调用deactivate ()。这将关闭 CamelContext。
在(非 OSGi)单元测试中,您应该使用 prepare () run () stop () 而不是 activate () deactivate () 来进行更精细的控制。另外,这允许我们在测试中避免可能的 SCR 特定操作。