首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

RabbitMQ源码分析 - 起动

2012-08-13 
RabbitMQ源码分析 - 启动-rabbit_boot_step({rabbit_registry,[{description, plugin registry},{mfa,{r

RabbitMQ源码分析 - 启动

-rabbit_boot_step({rabbit_registry, [{description, "plugin registry"}, {mfa, {rabbit_sup, start_child, [rabbit_registry]}}, {requires, external_infrastructure}, {enables, kernel_ready}]}).?其中rabbit_registry定义步骤名称,mfa定义启动入口,requires定义该步骤所依赖的步骤(组名),enables说明依赖于该步骤成功执行的步骤。

???????? 启动步骤可以分组。一组步骤的启动会依赖于另一组步骤的成功执行。像上面的rabbit_registry就依赖于external_infrastructure(包含多个启动步骤)的成功执行,而rabbit_registry的成功启动则会使kernel_ready进入准备状态。实际上,会有多个启动步骤会使kernel_ready进入准备状态,只有所有这些启动步骤都成功启动后,依赖于kernel_ready的步骤才能启动(像rabbit_log, rabbit_event都会使kernel_ready进入准备状态)。

???????? RabbitMQ就根据这些启动步骤之间的依赖关系,构造一个有向无环图(这跟我在ganger里对进程依赖关系的组织类似),并拓扑排序所有步骤(参见[$RABBIT_SRC/src/rabbit.erl --> sort_boot_steps/2]),生成唯一的启动顺序,然后按照该启动顺序调用相应启动步骤的MFA启动相应功能(参见[$RABBIT_SRC/src/rabbit.erl --> run_boot_steps/2])。

(具体有哪些启动步骤,以及每个步骤的具体功能参见这篇文章:RabbitMQBoot Process)

热点排行