本文介绍了Java Riak连接问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试将Java Eclipse连接到Linux Ubuntu上的Riak服务器.跟进了一些指南,但仍然无法正常工作.使用:-Riak-Client-2.0.2-Eclipse Oxygen.1a版本(4.7.1a)-Ubuntu 16.04.3-openjdk版本"1.8.0_151"

trying to connect my Java Eclipse to a Riak server on Linux Ubuntu.Followed up some guides but still don't working.Using:- Riak-Client-2.0.2- Eclipse Oxygen.1a Release (4.7.1a)- Ubuntu 16.04.3- openjdk version "1.8.0_151"

在使用slf4j之前遇到了一些问题,因此我添加了一个外部jar:slf4j-jdk14-1.7.25-解决该问题的资源.

Have had some problems before with slf4j so i added a external jar:slf4j-jdk14-1.7.25-sources to solve it.

我的代码:

import com.basho.riak.client.api.RiakClient;
import com.basho.riak.client.api.commands.kv.FetchValue;
import com.basho.riak.client.api.commands.kv.StoreValue;
import com.basho.riak.client.core.query.Location;
import com.basho.riak.client.core.query.Namespace;


import java.net.UnknownHostException;
import java.util.concurrent.ExecutionException;

public class ProdukteEinlesen {
    public static void main(String [] args) throws UnknownHostException, ExecutionException, InterruptedException {

        RiakClient client = RiakClient.newClient(8098, "127.0.0.1");
        Location location = new Location(new Namespace("TestBucket"),"TestKey");

        FetchValue fv = new FetchValue.Builder(location).build();
        FetchValue.Response response = client.execute(fv);

        // Fetch object as String
        String value = response.getValue(String.class);
        System.out.println(value);

        client.shutdown();
    }
}

现在我得到了:

 Dez 04, 2017 5:58:23 PM com.basho.riak.client.core.RiakNode start
INFORMATION: RiakNode started; 127.0.0.1:8098
Dez 04, 2017 5:58:23 PM com.basho.riak.client.core.RiakCluster start
INFORMATION: RiakCluster is starting.
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-2083854054 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:674162571 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:1161062152 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-1411904647 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-1369356068 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:957736106 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-1598195494 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-1723639977 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$2 operationComplete
SCHWERWIEGEND: inAvailable channel closed; id:-1232050671 127.0.0.1:8098
Dez 04, 2017 6:03:20 PM com.basho.riak.client.core.RiakNode$3 operationComplete
SCHWERWIEGEND: Channel closed while operation in progress; id:-459317961 127.0.0.1:8098
Dez 04, 2017 6:08:17 PM com.basho.riak.client.core.RiakNode healthCheckFailed
SCHWERWIEGEND: RiakNode failed healthcheck operation; health checking; 127.0.0.1:8098 java.io.IOException: Channel closed while performing health check op.
Dez 04, 2017 6:08:17 PM com.basho.riak.client.core.DefaultNodeManager nodeStateChanged
INFORMATION: NodeManager moved node to unhealthy list; 127.0.0.1:8098
Dez 04, 2017 6:08:17 PM com.basho.riak.client.core.RiakNode$3 operationComplete
SCHWERWIEGEND: Channel closed while operation in progress; id:-1254319488 127.0.0.1:8098
Exception in thread "main" java.util.concurrent.ExecutionException: com.basho.riak.client.core.NoNodesAvailableException
    at com.basho.riak.client.core.FutureOperation.get(FutureOperation.java:260)
    at com.basho.riak.client.api.commands.CoreFutureAdapter.get(CoreFutureAdapter.java:52)
    at com.basho.riak.client.api.RiakCommand.execute(RiakCommand.java:89)
    at com.basho.riak.client.api.RiakClient.execute(RiakClient.java:293)
    at ProdukteEinlesen.main(ProdukteEinlesen.java:18)
Caused by: com.basho.riak.client.core.NoNodesAvailableException
    at com.basho.riak.client.core.RiakCluster.retryOperation(RiakCluster.java:468)
    at com.basho.riak.client.core.RiakCluster.access$1000(RiakCluster.java:47)
    at com.basho.riak.client.core.RiakCluster$RetryTask.run(RiakCluster.java:553)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我的Riak数据库已经可以通过命令正常工作了.

My Riak DB is working fine tasted it already via command.

推荐答案

您似乎为Riak连接使用了错误的端口号. Protocol Buffers API的正确端口是8087(假设您尚未更改默认值).端口8098用于HTTP,您必须已使用cURL或其他HTTP客户端测试了服务器. Java代码应如下所示:

You seem to be using an incorrect port number for Riak connections. The correct port for the Protocol Buffers API is 8087 (assuming you haven't changed the defaults). Port 8098 is for HTTP, you must have tested the server with cURL or another HTTP client. The Java code should be as follows:

RiakClient client = RiakClient.newClient(8087, "127.0.0.1");

  • Riak协议缓冲区API
  • RiakClient Javadoc
    • Riak Protocol Buffers API
    • RiakClient Javadoc
    • 这篇关于Java Riak连接问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 19:33