0

我是二郎的新手。我正在尝试使用我的 mongoose 源构建 RabitMQ Erlang AMQP 客户端库,以便我可以在我的 mongooseim 模块中使用该库。我从这里下载了库源。.ez 文件包含两个目录,ebin 和includes。ebin 包含 .beam 文件,而 include 包含 erlang .hrl 文件。如果我将所有 .hrl 文件放入 mongooseim 的 apps/ejabberd/include 目录并将所有 .beam 文件放入 ebin 目录,它会起作用吗?我正在使用 make 和 make rel 来编译 mongooseim。

4

2 回答 2

2

您建议的方式可行,但可以采用更清洁的方法。您可以调整 Makefile 以简单地将库复制到刚刚构建的 MongooseIM 发布目录中,但有更好的方法:

  1. amqp_client-3.5.1.ez里面下载解压mongooseim/apps/
  2. 可以选择签mongooseim/apps/amqp_client-3.5.1/入您的 git 存储库,这样您就不必在每次克隆存储库时再次下载它。
  3. 像捆绑MongooseIMreltool依赖项和组件一样捆绑应用程序,即应用以下补丁:

    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,因此也必须添加到发行版中。

  4. make rel重建amqp_client与 MongooseIM 捆绑的版本。
  5. 运行服务器(例如bin/mongooseimctl livemongooseim/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}}
    

    (不要介意错误,当然我们希望它已经启动。)

于 2015-04-22T21:30:28.560 回答
0

我发现使用 Jon Brisbin 的 rebar 友好型 amqp 库(https://github.com/jbrisbin)更容易、更干净。我所要做的就是在 rebar.config 文件的依赖项列表中添加 rabbit_common 和 amqp_client 存储库。

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"}}}
  ]}.

然后制作并制作rel。我可以使用以下任何 mongooseim 模块包含 amqp_client 标头:

-include_lib("amqp_client/include/amqp_client.hrl").
于 2015-06-12T20:45:59.817 回答