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