我尝试过Basho的文档片段,如下所示:
public class TasteOfRiak {
public static void main(String[] args) throws UnknownHostException, ExecutionException, InterruptedException
{
RiakClient client = RiakClient.newClient(port, "IP");
Location location = new Location(new Namespace("Bucket"), "bucketType");
FetchValue fv = new FetchValue.Builder(location).build();
FetchValue.Response response = client.execute(fv);
String value = response.getValue(String.class);
System.out.println(value);
client.shutdown();
}
}
但是,这引发了异常:
[main]错误com.basho.riak.client.core.RiakNode - 连接尝试失败:java.net.ConnectException: 连接超时:无更多信息: 线程" main"中的例外情况[pool-1-thread-2] INFO com.basho.riak.client.core.DefaultNodeManager - NodeManager将节点移动到不健康列表; 3.34.211.202:8098 java.util.concurrent.ExecutionException:com.basho.riak.client.core.NoNodesAvailableException 在com.basho.riak.client.core.FutureOperation.get(FutureOperation.java:260) 在com.basho.riak.client.api.commands.CoreFutureAdapter.get(CoreFutureAdapter.java:52) 在com.basho.riak.client.api.RiakCommand.execute(RiakCommand.java:89) 在com.basho.riak.client.api.RiakClient.execute(RiakClient.java:293) 在TasteOfRiak.main(TasteOfRiak.java:20) 引起:com.basho.riak.client.core.NoNodesAvailableException 在com.basho.riak.client.core.DefaultNodeManager.executeOnNode(DefaultNodeManager.java:95) 在com.basho.riak.client.core.RiakCluster.execute(RiakCluster.java:197) 在com.basho.riak.client.core.RiakCluster.retryOperation(RiakCluster.java:328) 在com.basho.riak.client.core.RiakCluster.access $ 800(RiakCluster.java:44) 在com.basho.riak.client.core.RiakCluster $ RetryTask.run(RiakCluster.java:340) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:744)
答案 0 :(得分:1)
检查riak节点是否正在运行(如Craig所说),您可以在etc/vm.args
中看到节点名称。
确保erlang节点cookie正确无误。 Erlang VM会检查来自其他VM的cookie是否匹配,如果没有,它会拒绝ping或连接请求。 ~/.erlang.cookie
中的本地Cookie位置建议在连接之前尝试将VM Cookie设置为本地Cookie。
另一种方式:
$ bin/riak console
%% set cookie
erlang:set_cookie(your_riak_node_name, your_cookie)
答案 1 :(得分:0)
riak java客户端不支持HTTP。确保使用协议缓冲端口进行连接。默认值为8087
还要确保您的Riak服务器正在侦听您指定的IP地址。您可以在etc/riak/riak.conf