One of the newest features of the Couchbase SDKs and spymemcached libraries is the support for communicating intelligently with the Couchbase Server cluster. The smart client support allows the SDK to automatically connect clients to the data stored within the cluster by directly communicating with the right node in the cluster. This ability also allows for clints to continue to operate during failover and rebalancing operations.
All you need to start using this functionality is to use a new
Couchbase constructor that allows you to pass
in a list of base URIs, and the bucket name and password as we did
in the connect() method earlier.
try { URI server = new URI(addresses); ArrayList<URI> serverList = new ArrayList<URI>(); serverList.add(server); CouchbaseClient client = new CouchbaseClient( serverList, "rags", "password"); } catch (Throwable ex) { ex.printStackTrace(); }
Compile and run the application:
shell> javac -cp couchbase-client-1.0.0.jar:spymemcached-2.8.0.jar Tutorial.java shell> java -cp .:couchbase-client-1.0.0.jar:\ spymemcached-2.8.0.jar:jettison-1.1.jar:netty-3.2.0.Final.jar:\ commons-codec-1.5.jar Tutorial 192.168.3.104
Replace serverhost with the name or IP address of your server, you won't need the port this time. You will see something like the following output:
Jan 17, 2012 12:11:43 PM net.spy.memcached.MemcachedConnection createConnections INFO: Added {QA sa=/192.168.3.111:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue Jan 17, 2012 12:11:43 PM net.spy.memcached.MemcachedConnection handleIO INFO: Connection state changed for sun.nio.ch.SelectionKeyImpl@2abe0e27 Jan 17, 2012 12:11:43 PM net.spy.memcached.auth.AuthThread$1 receivedStatus INFO: Authenticated to /192.168.3.111:11210
You can see that it connects to the server and automatically loads the list of all Couchbase servers, connects to them and authenticates. It uses the vbucket algorithm automatically, and no code changes to the application will be required.