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 特定操作。