rabbitmq erlang客户端使用钢筋友好的pkg,在钢筋发布时无法在dev env上工作

rabbitmq erlang客户端使用钢筋友好的pkg,在钢筋发布时无法在dev env上工作,erlang,rabbitmq,reltool,Erlang,Rabbitmq,Reltool,我成功地将rabbitmq erlang客户端的钢筋友好包用于一个简单的Hello World重新格式化和OTP“兼容”应用程序,并且在开发环境中工作良好。我能够启动erl控制台并执行我的应用程序:启动(helloworld)。并连接到代理,打开通道并与队列通信 然而,然后我继续执行reab generate,它很好地构建了发行版,但是当我尝试从自包含的发行版包启动时,事情突然爆发了 我知道钢筋发布是一门鲜为人知的艺术,但我想知道,对于使用rabbitmq erlang客户端的应用程序的部署,我

我成功地将rabbitmq erlang客户端的钢筋友好包用于一个简单的Hello World重新格式化和OTP“兼容”应用程序,并且在开发环境中工作良好。我能够启动erl控制台并执行我的
应用程序:启动(helloworld)。
并连接到代理,打开通道并与队列通信

然而,然后我继续执行
reab generate
,它很好地构建了发行版,但是当我尝试从自包含的发行版包启动时,事情突然爆发了

我知道钢筋发布是一门鲜为人知的艺术,但我想知道,对于使用rabbitmq erlang客户端的应用程序的部署,我有哪些选择

下面是崩溃时控制台的输出:

=INFO REPORT==== 18-Dec-2012::16:41:35 ===
    application: session_record
    exited: {{{badmatch,
               {error,
                {'EXIT',
                 {undef,
                  [{amqp_connection_sup,start_link,
                    [{amqp_params_network,<<"guest">>,<<"guest">>,<<"/">>,
                      "127.0.0.1",5672,0,0,0,infinity,none,
                      [#Fun<amqp_auth_mechanisms.plain.3>,
                       #Fun<amqp_auth_mechanisms.amqplain.3>],
                      [],[]}],
                    []},
                   {supervisor2,do_start_child_i,3,
                    [{file,"src/supervisor2.erl"},{line,391}]}, 
                   {supervisor2,handle_call,3,
                    [{file,"src/supervisor2.erl"},{line,413}]}, 
                   {gen_server,handle_msg,5,
                    [{file,"gen_server.erl"},{line,588}]},
                   {proc_lib,init_p_do_apply,3,
                    [{file,"proc_lib.erl"},{line,227}]}]}}}},
              [{amqp_connection,start,1,
                [{file,"src/amqp_connection.erl"},{line,164}]}, 
               {hello_qp,start_link,0,[{file,"src/hello_qp.erl"},{line,10}]},
               {session_record_sup,init,1,
                [{file,"src/session_record_sup.erl"},{line,55}]},
               {supervisor_bridge,init,1,
                [{file,"supervisor_bridge.erl"},{line,79}]},
               {gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},
               {proc_lib,init_p_do_apply,3,
                [{file,"proc_lib.erl"},{line,227}]}]},
             {session_record_app,start,[normal,[]]}}
    type: permanent {"Kernel pid terminated",application_controller

尝试将
{mod_-cond,derived}
更改为
{mod_-cond,all}
。这意味着reltool不会试图巧妙地从包含的应用程序中获取哪些模块。我怀疑您的问题是Relover没有考虑<代码> AMQPXCouthNo.SUP是必要的;您可以通过检查它是否存在于
lib/amqp_client-0.8/ebin

中来确认@legocia给出的答案是否有效。 下面是示例reltool.config

    %% -*- mode: erlang -*-
%% ex: ft=erlang
{sys, [
       {lib_dirs, ["..","../deps"]},
       {erts, [{mod_cond, all}, {app_file, strip}]},
       {app_file, strip},
       {rel, "chat_grabber", "1",
        [
         kernel,
         stdlib,
         sasl,
           couchbeam,
         chat_grabber
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "chat_grabber"},
       {profile, embedded},
       {incl_cond, derived},
       {excl_archive_filters, [".*"]}, %% Do not archive built libs
       {excl_sys_filters, ["^bin/(?!start_clean.boot)",
                           "^erts.*/bin/(dialyzer|typer)",
                           "^erts.*/(doc|info|include|lib|man|src)"]},
       {excl_app_filters, ["\.gitignore"]},
       {app,couchbeam,[{mod_cond,app},{incl_cond,include},{lib_dir, "../deps/"}]},
       {app, chat_grabber, [{mod_cond, app}, {incl_cond, include}, {lib_dir, ".."}]}
      ]}.

{target_dir, "chat_grabber"}.

{overlay, [
           {mkdir, "log/sasl"},
           {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
           {copy, "files/nodetool", "releases/\{\{rel_vsn\}\}/nodetool"},
           {copy, "chat_grabber/bin/start_clean.boot",
                  "\{\{erts_vsn\}\}/bin/start_clean.boot"},
           {copy, "files/chat_grabber", "bin/chat_grabber"},
           {copy, "files/chat_grabber.cmd", "bin/chat_grabber.cmd"},
           {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
           {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
           {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
           {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
          ]}.

你能发布你的
reltool.config
文件吗?@kjw0188我发布了请求的配置文件,奇怪的是生成版本并没有失败,而似乎失败的代码来自打开连接时的amqp_客户端。我检查了rabbitmq服务器a.s.o.上的所有网络设置三倍。感谢您的帮助生成版本只是移动文件,因此您的版本可能不包括amqp客户端,导致未定义的错误。对,我确实在库上看到amqp_客户端以及其他依赖项/应用,此外,还有一个sasl日志显示代码如何进入amqp_客户端模块并崩溃,我怀疑这是客户端代码的问题,与发布无关。
    %% -*- mode: erlang -*-
%% ex: ft=erlang
{sys, [
       {lib_dirs, ["..","../deps"]},
       {erts, [{mod_cond, all}, {app_file, strip}]},
       {app_file, strip},
       {rel, "chat_grabber", "1",
        [
         kernel,
         stdlib,
         sasl,
           couchbeam,
         chat_grabber
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "chat_grabber"},
       {profile, embedded},
       {incl_cond, derived},
       {excl_archive_filters, [".*"]}, %% Do not archive built libs
       {excl_sys_filters, ["^bin/(?!start_clean.boot)",
                           "^erts.*/bin/(dialyzer|typer)",
                           "^erts.*/(doc|info|include|lib|man|src)"]},
       {excl_app_filters, ["\.gitignore"]},
       {app,couchbeam,[{mod_cond,app},{incl_cond,include},{lib_dir, "../deps/"}]},
       {app, chat_grabber, [{mod_cond, app}, {incl_cond, include}, {lib_dir, ".."}]}
      ]}.

{target_dir, "chat_grabber"}.

{overlay, [
           {mkdir, "log/sasl"},
           {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
           {copy, "files/nodetool", "releases/\{\{rel_vsn\}\}/nodetool"},
           {copy, "chat_grabber/bin/start_clean.boot",
                  "\{\{erts_vsn\}\}/bin/start_clean.boot"},
           {copy, "files/chat_grabber", "bin/chat_grabber"},
           {copy, "files/chat_grabber.cmd", "bin/chat_grabber.cmd"},
           {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
           {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
           {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
           {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
          ]}.