Java Riak 连接问题

2022-01-24 00:00:00 connection linux java eclipse 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-sources 来解决.

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 DB 运行良好,已经通过命令体验了它.

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

相关文章