这个问题是前面提到的包括Erlang客户端库的延续。
我可以通过更改来包括图书馆:
{mimetypes, ".*", {git, "git://github.com/spawngrid/mimetypes", {branch, master}}},
%% Uncomment the following lines and comment the bottom lines with specific
%% tags to always pull the latest versions
{nitrogen_core, ".*", {git, "git://github.com/nitrogen/nitrogen_core",{branch, master}}},至:
{mimetypes, ".*", {git, "git://github.com/spawngrid/mimetypes", {branch, master}}},
{riakc, "1.4.1",
{git, "git://github.com/basho/riak-erlang-client",
{tag, "1.4.1"}}},
%% Uncomment the following lines and comment the bottom lines with specific
%% tags to always pull the latest versions
{nitrogen_core, ".*", {git, "git://github.com/nitrogen/nitrogen_core",{branch, master}}},在rel/nitrogen/rebar.config中使用make重新编译
现在我已经在lib文件夹下安装了这些文件,我不知道我应该将riakc_pb_socket库实现为在文档中建议
我试过把
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),但是我得到了以下错误消息:
application: nitrogen
exited: {{{badmatch,{error,{tcp,econnrefused}}},
[{nitrogen_sup,init,1,
[{file,"/home/neil/proj/nitrogen/rel/nitrogen/site/src/nitrogen_sup.erl"},
{line,43}]},
{supervisor,init,1,[{file,"supervisor.erl"},{line,239}]},
{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]},
{nitrogen_app,start,[normal,[]]}}
type: temporary我是否应该在应用程序初始化期间将这个连接连接到riak数据库一次,或者经常在处理新请求时进行连接。我看到了一些关于连接池的讨论,这会不会是我在应用程序初始化时设置的东西,然后链接到新进程。
我对erlang/OTP和这个框架很陌生,所以任何方向都会受到极大的赞赏。
添加:
当我通过bin/nitrogen console运行氮应用程序时,我能够运行{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1",8087).,并设法从riakc_pb_socket:ping(Pid).获得一个pong
我想现在的问题是:在哪些文件中通常设置/管理与查询/读/写相关的riak连接?
发布于 2014-03-04 13:38:17
做事的方法是:
gen_server,并将其添加到应用程序的主管树中。最好是你自己的应用程序,其中包括。gen_server初始化时,它会设置一个Riak连接。每当您想要使用连接时,您都可以call gen_server,并且由于它有连接,所以它将能够发出查询。gen_server崩溃。如果初始化时拒绝连接,则稍候再试。通常,您会看到一个单独的应用程序运行Erlang系统的“后端”部分,然后看到另一个应用程序,如氮气,用于处理Web内容。您的gen_server将属于“后端”部分。
一旦这个基础起作用,您可以进一步扩展它:
foo的模块中。无论何时您想使用riak,您都可以调用foo:f(...)。重写foo:f(...)以使用http://github.com/devinus/poolboy或诸如此类的东西来支持连接池到Riak集群。但是,只有当它证明单个连接太慢时才这样做。这清楚地显示了Erlang程序中松耦合的思想。foo模块的作用就像一个接口,但是您不知道该接口背后的实现。如果需要的话,您可以稍后更改它,以获得更快的速度。唯一需要做的就是实现正确的协议,在这种情况下,这是一个函数调用。
https://stackoverflow.com/questions/22161824
复制相似问题