Following on from my post Service discovery with Vert.x, let’s switch from using the Vert.x built-in Service Discovery to using ZooKeeper.
You can fire up a docker container running ZooKeeper using
docker run --name zookeeper --restart always -d zookeeper
Now we’ll need to add the following to our pom.xml
<dependency> <groupId>io.vertx</groupId> <artifactId>vertx-service-discovery-bridge-zookeeper</artifactId> <version>${vertx.version}</version> </dependency>
Note: vertx.version is set to 3.5.1
The code to create the Service Discovery to ZooKeeper is, as follows
ServiceDiscovery discovery = ServiceDiscovery.create(vertx) .registerServiceImporter(new ZookeeperServiceImporter(), new JsonObject() .put("connection", "172.17.0.2:2181") .put("basePath", "/services/hello-service"));
Replace the ip address with the one create by Docker or if you’re running on localhost.
We register the ZooKeeperServiceImporter and supply at least the “connection”, the “basePath” is not required, a default will be supplied if none is explicitly supplied.
Don’t forget you’ll need the import
import io.vertx.servicediscovery.zookeeper.ZookeeperServiceImporter;
References
Docker ZooKeeper
Vert.x Service Discovery
Code
Source code relating to these posts on Vert.x can be found at VertxSamples. The code differs from the posts in that in some cases it’s been refactored to reduce some code duplication etc.