2010年4月21日星期三

rabbitmq boot 策略

rabbitmq 1.7.2 在原 1.7.0 版本上重新修改了启动策略, 变得更加灵活和强大
分成几个阶段
1. 初始化检测 prepare
1. 挂载log 机制
2. 检查mnesia 数据路径
2. 启动所有依赖的 app, 包括自己[os_mon, mnesia, rabbit], 并把自己放到最后
3. application:start(rabbit)
1. 开启 rabbit_sup supervisor, 一个空的监控 用来动态挂载之下的所有业务
2. 输出欢迎信息
3. 通过 rabbit:boot_steps(), 取得整个rabbit app下按照依赖关系排序的所有module 启动项.
rabbit采用了一种机制, 可以获取到 rabbit 每一个module下的 启动项. 每一个启动 项用 -rabbit_boot_step(Step_name, [{descripte, D}, {mfa, {M,F,A}}, {enables,E},{requires, R}]), 进行声明. 所有的启动项的顺序 用有限状态机来进行 依赖关系的排序.

整个启动过程还是很优雅的, 用很少的代码解决了启动的依赖问题

没有评论: