连接到Riak并通过Erlang存储数据

时间:2014-10-24 21:06:08

标签: erlang riak

我的测试模块的目标是开始存储我在本地节点中自己输入的数据。

我在计算机上设置了一个本地节点。我还通过riak attach为它添加了一个新的erlang模块。

在我的模块test.erl中,到目前为止只有riakConnect函数:

riakConnect() ->
  riakc_pb_socket:start_link("127.0.0.1", 8087).

我在同一模块中也有一个接收部件,看起来类似于(现在已注释掉):

riakReceive() ->
  receive
     {store, Bucket, Key, Value} ->
         ...
  end.

问题在于,当我附加文件时,我到达节点的控制台,该控制台说riakc_pb_socket:start_link()未定义,实际上没有任何反应。

我认为我在这里遗漏了一些信息。

1 个答案:

答案 0 :(得分:1)

您是否在路径中使用riakc_pb_socket运行节点?如果您查看repo's readme,则必须使用已编译的erlang二进制文件(erl路径

)启动VM
$ erl -pa $PATH_TO_RIAKC/ebin $PATH_TO_RIAKC/deps/*/ebin

如果您在Erlang shell中,则可以验证是否能够使用l(ModuleName).函数加载模块。您可以使用code:get_path().检查您的路径(在哪里查找二进制文件)。您也可以修改它(添加新目录),但作为一般规则,您应该具有正确的VM启动脚本/命令。

最后,如果你开发自己的应用程序(我认为你是),你可以查看像rebar这样的工具。你可以在那里描述所有的依赖项,比如你的erlang-riak客户端,他会帮助你下载和编译它们。有了这个,你可以用简单的

来实现你的VM
erl -pa ebin -pa deps/*/ebin

评论后编辑

Riak只是另一个应用程序,使用Erlang,你实际上可以将wright连接到它。只是在工作生产的东西。但这很危险,或者可能。你应该离开Riak。至少它是内部的。特别是Riak为您提供了良好的稳定接口,可以从外部连接到它。

让我们这样做。我们将使您的Riaks节点运行,并编写另一个应用程序,它将会#34;说"它。要说话,我们将使用basho本身的riak-erlang client

第一步是使用rebar build tool创建开发环境。徘徊getting started guide

$ mkdir myapp
$ cd myapp
$ wget https://raw.github.com/wiki/rebar/rebar/rebar && chmod u+x rebar
$ rebar create-app appid=myapp

除了少数其他文件,您现在拥有src文件夹,您可以(并将)放置自定义模块。您可以检查它是否使用./rebar compile命令进行编译。所有已编译的文件都将位于bin文件夹中(与src相同)并且将具有.beam扩展名(就像java具有.java)。

我们需要的另一件事就是精确的库。我们需要riakc_pb_socket.beamriakc_pb_socket模块运行任何内容。最简单的方法是下载源代码并编译它们。由于我们使用钢筋来制造东西,所以很容易。

我们将创建rebar.config文件并使用依赖项

填充它
{deps, [{ riakc, ".*" ,
          {git, "https://github.com/basho/riak-erlang-client.git", {branch, "1."}}}
       ]}.

下载并编译

$ ./rebar get-deps compile

现在你应该能够启动新的Erlang VM,给它起一个名字,添加你的酒厂的路径(从自定义模块和依赖项)和shell运行你的代码。

$ erl -sname myapp -pa ebin -pa deps/*/ebin 
(myapp@localhost) 1> custom_module:riakConnect().

它应该通过。

如果您想直接从系统控制台运行一些代码,请查看erl -run或escript。

这应该让你去。