RabbitMQ的启动是基于boot steps, boot steps的每一个step可能是启动一个component,也可能是打印一个启动信息。 boot steps是一个有向无环图,保证了启动的顺序性。
一个boot step:
-rabbit_boot_step({recovery,
[{description, "exchange, queue and binding recovery"},
{mfa, {rabbit, recover, []}},
{requires, empty_db_check},
{enables, routing_ready}]}).
name是recovery,
mfa是启动Module,Function,Arguments,
requires是必须在其之前启动的boot step
enables是在其之后可以启动的boot step
来看下整个的启动过程:
RabbitMQ只有一个Application, 由rabbit_app.in 可知, rabbit的启动入口是rabbit.erl的 start/0,