RabbitMQ源代码 - rabbitmq-boot-steps如何工作?

时间:2015-01-21 18:15:57

标签: erlang rabbitmq

我是erlang和rabbitmq的新手,并开始使用RabbitMQ代码库。我发现在rabbit.erl start / 2函数实现但看起来像start / 0或boot / 0是需要为rabbitMQ启动调用的函数。对于一个非常基本的问题道歉,但非常感谢任何帮助理解RabbitMQ的代码流程,专门用于启动和兔子启动步骤。

提前致谢。

2 个答案:

答案 0 :(得分:1)

RabbitMQ启动过程在此处记录:https://github.com/videlalvaro/rabbit-internals/blob/master/rabbit_boot_process.md

我很想知道你为什么要调查它。

答案 1 :(得分:0)

您正在查看的rabbit.erl RabbitMQ文件实现了Application behaviour。这意味着当Erlang VM被告知启动rabbit应用程序时,它将查找.app文件(RabbitMQ位于ebin/rabbit_app.in中)。在第16行,您可以看到rabbit是负责启动应用程序的模块。 Erlang假设模块实现了应用程序行为(如果没有,你肯定会遇到错误)。一旦Erlang完成所有设置,它就会调用start/2中的rabbit.erl回调。这反过来调用rabbit_sup:start_link/0。我之前从未使用过RabbitMQ所以我不确定之后发生了什么,但很可能主管启动了RabbitMQ运行所需的所有其他主管和工作进程。

至于start/0boot/0,它们不是Erlang回调函数。它们是RabbitMQ工程师创建的自定义函数。我想这些函数用于在特定场景中启动应用程序(例如测试,在开发过程中在解释器中启动应用程序等)。

希望这有帮助!检查Erlang模块时,始终查找behaviour模块属性(-behaviour(application).)。一旦了解了模块实现的行为,您就可以查找该行为(erlang application behavior)并了解更多有关工作方式的信息。