Wednesday, March 7, 2018

Riak with Java tutorial - Basic Riak Setup and Cluster Connection Part 1

Basic Riak Setup and Cluster Connection

Start with riak setup on local or remote machine. Click here to get started with Installation Of Riak.

Maven dependency to include Riak client in your project, add it to pom.xml of your project.

       <dependency>
            <groupId>com.basho.riak</groupId>
            <artifactId>riak-client</artifactId>
            <version>2.0.0</version>
        </dependency>

Setting up a Cluster: First step in using java is to setup riak cluster, riak client and then check connection with Riak DB.
RiakConfig class

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import com.basho.riak.client.core.RiakCluster;
import com.basho.riak.client.core.RiakNode;

public class RiakConfig {
    private static RiakCluster cluster = RiakConfig.getCluster();
    /**
     * This value is dervied from property file.
     * its value can be 127.0.0.1:10017, 127.0.0.1:10018 or remote riak db address
     */
    private static final String RIAK_SERVERS = "riak.servers";
    /**
     * Setup cluster.
     *
     * @return RiakCluster RiakCluster
     * @throws UnknownHostException
     *             UnknownHostException
     */
    public RiakCluster setUpCluster() throws UnknownHostException {
        if (cluster == null) {
             PropertyConfig cfg = PropertyConfig.getInstance();
             String riakServersDetails = cfg.get(RIAK_SERVERS);
             String[] riakServerArray = riakServersDetails.split(",");
             synchronized (RiakConfig.class) {
                List<RiakNode> riakNodeList = new ArrayList<RiakNode>();
                for (final String riakServer : riakServerArray) {
                    RiakNode node = new RiakNode.Builder()
                        .withRemoteAddress(riakServer.split(":")[0])
                        .withRemotePort(Integer.parseInt(riakServer.split(":")[1]))
                        .build();
                    riakNodeList.add(node);
                }

                // This cluster object takes our one node as an argument
                cluster = new RiakCluster.Builder(riakNodeList).build();

                // The cluster must be started to work, otherwise you will see
                // errors
                cluster.start();

            }
        }
        return cluster;
    }
    public static RiakCluster getCluster() {
        return cluster;
    }
    public static void setCluster(final RiakCluster cluster) {
        RiakConfig.cluster = cluster;
    }
}

RiakClientFactory Class




import java.net.UnknownHostException;

import com.basho.riak.client.api.RiakClient;
import com.basho.riak.client.core.RiakCluster;
/**
 * @author Shipra Garg
 */
public class RiakClientFactory {
     private RiakCluster riakCluster;
     /**
      * @param riakConfig is an object of RiakConfig type.
      */
     public RiakClientFactory(final RiakConfig riakConfig) {
          try {
               riakCluster = riakConfig.setUpCluster();
          } catch (UnknownHostException e) {
               throw new RuntimeException();
          }
     }

     public RiakClient getRiakClient() {
          return new RiakClient(riakCluster);
     }

     public RiakCluster getRiakCluster() {
          return riakCluster;
     }
}

You can get the RiakCluster Or RiakClient Object diectly from RiakClientFactory class. It will instantiate the RiakCluster on  object creation of RiakClientFactory.

RiakClient Creation

RiakClient riakClient = new RiakClient(riakCluster);

Method to check Riak Connection
@Override
public boolean checkRiakConnection()
throws Exception {
RiakClient riakClient = riakClientFactory.getRiakClient();
if (riakClient != null) {
return true;
}
return false;


Stay tuned for more Riak tutorials.





 

No comments:

Post a Comment