我是erlang的新手。我正在尝试使用我的mongoose源构建RabitMQ Erlang AMQP客户端库,以便我可以在我的mongooseim模块中使用该库。我从here下载了库源代码。 .ez文件包含两个目录,ebin和includes。 ebin包含.beam文件,include包含erlang .hrl文件。如果我将所有.hrl文件放入mongooseim的apps / ejabberd / include目录并将所有.beam文件放入ebin目录,它会工作吗?我正在使用make和make rel来编译mongooseim。
答案 0 :(得分:2)
您建议的方式可行,但可以采用更清洁的方法。您可以调整Makefile以简单地将库复制到刚构建的MongooseIM版本目录中,但有更好的方法:
amqp_client-3.5.1.ez
内下载并解包mongooseim/apps/
。mongooseim/apps/amqp_client-3.5.1/
签入您的git仓库,这样您每次克隆存储库时都不必再次下载。使reltool
捆绑应用程序就像捆绑MongooseIM依赖项和组件一样,即应用以下补丁:
diff --git a/rel/reltool.config.script b/rel/reltool.config.script
index 731d58c..395a73f 100644
--- a/rel/reltool.config.script
+++ b/rel/reltool.config.script
@@ -20,7 +20,9 @@ BaseAppsToRun = [compiler,
cowboy,
fusco,
folsom,
- exometer],
+ exometer,
+ xmerl,
+ amqp_client],
AppsToRunIn = BaseAppsToRun ++ proplists:get_value(apps_to_run, Conf, []),
@@ -44,7 +46,9 @@ BaseAppsToInclude = AppsToRun ++
alarms,
idna,
recon,
- setup
+ setup,
+ xmerl,
+ amqp_client
],
请注意,xmerl
是amqp_client
的依赖关系,因此也必须添加到版本中。
make rel
使用与MongooseIM捆绑的amqp_client
重建版本。运行服务器(例如bin/mongooseimctl live
目录中的mongooseim/rel/mongooseim
)并验证amqp_client
是否可用且正在运行:
(mongooseim@localhost)1> application:which_applications().
... snipped ...
{amqp_client,"RabbitMQ AMQP Client","3.5.1"},
{xmerl,"XML parser","1.3.7"},
... snipped ...
(mongooseim@localhost)2> amqp_client:start().
{error,{already_started,amqp_client}}
(不介意错误,当然我们希望它已经开始。)
答案 1 :(得分:0)
我发现使用Jon Brisbin的钢筋友好amqp库(https://github.com/jbrisbin)更容易,更清洁。我所做的只是在rebar.config文件的依赖列表中添加rabbit_common和amqp_client repo。
diff --git a/rebar.config b/rebar.config
index c719d98..cafdb0f 100644
--- a/rebar.config
+++ b/rebar.config
@@ -36,6 +36,8 @@
{pa, ".*", {git, "git://github.com/lavrin/pa.git", "c616d3f9"}},
{ecoveralls, ".*", {git, "git://github.com/nifoc/ecoveralls.git", "40fa0d2f2057fff29e964f94fccf6ef2f13d34d2"}},
{mustache, ".*", {git, "git://github.com/mojombo/mustache.erl.git", "d0246fe143058b6404f66cf99fece3ff6e87b7ed"}},
+ {rabbit_common, ".*", {git, "git://github.com/jbrisbin/rabbit_common.git", "rabbitmq-3.5.0"}},
+ {amqp_client, ".*", {git, "git://github.com/jbrisbin/amqp_client.git", {tag, "rabbitmq-3.5.0"}}},
{recon, "2.2.1", {git, "git://github.com/ferd/recon.git", {tag, "2.2.1"}}}
]}.
然后制作并制作相关信息。我可以使用以下命令从任何mongooseim模块中包含amqp_client标头:
-include_lib("amqp_client/include/amqp_client.hrl").