https://github.com/nextopcn/gadget-etcd
Etcd v3 java client
https://github.com/nextopcn/gadget-etcd
client etcd etcdv3
Last synced: 5 months ago
JSON representation
Etcd v3 java client
- Host: GitHub
- URL: https://github.com/nextopcn/gadget-etcd
- Owner: nextopcn
- License: apache-2.0
- Created: 2019-01-16T03:36:45.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-07-05T20:49:40.000Z (almost 3 years ago)
- Last Synced: 2025-07-03T21:06:24.558Z (12 months ago)
- Topics: client, etcd, etcdv3
- Language: Java
- Size: 230 KB
- Stars: 7
- Watchers: 6
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Table of Contents([中文说明](./README.zh_CN.md))
=================
* [1. Gadget-etcd](#1-gadget-etcd)
* [1.1. Brief introduction](#11-brief-introduction)
* [1.2. Requirements](#12-requirements)
* [1.3. Maven dependency](#13-maven-dependency)
* [1.4. Install from source code](#14-install-from-source-code)
* [2. Usage](#2-usage)
* [2.1. Client builder](#21-client-builder)
* [2.2. Standalone usage](#22-standalone-usage)
* [2.3. DNS SRV](#23-dns-srv)
* [2.4. Watch](#24-watch)
# 1. Gadget-etcd
## 1.1. Brief introduction
[](https://travis-ci.org/nextopcn/gadget-etcd)
[](https://coveralls.io/github/nextopcn/gadget-etcd?branch=master)
[](https://maven-badges.herokuapp.com/maven-central/cn.nextop/gadget-etcd)
[](https://github.com/nextopcn/gadget-etcd/blob/master/LICENSE)
An etcd v3 client written by Java.
## 1.2. Requirements
jdk 1.8+
maven-3.3.1+
## 1.3. Maven dependency
```xml
cn.nextop
gadget-etcd
1.0.0
```
## 1.4. Install from source code
```
$mvn clean install -Dmaven.test.skip=true
```
# 2. Usage
## 2.1. Client builder
```java
final String[] endpoints = new String[]{ "http://192.168.1.100:2379",
"http://192.168.1.101:2379", "http://192.168.1.102:2379" };
final ClientImpl.Builder builder = ClientImpl.builder();
final NameResolverFactory factory = new NameResolverFactory(endpoints);
builder.setNameResolverFactory(factory);
Client client = builder.build("my client");
```
## 2.2. Standalone usage
```java
final String[] endpoints = new String[]{ "http://192.168.1.100:2379",
"http://192.168.1.101:2379", "http://192.168.1.102:2379" };
final ClientImpl.Builder builder = ClientImpl.builder();
final NameResolverFactory factory = new NameResolverFactory(endpoints);
builder.setNameResolverFactory(factory);
Client client = builder.build("my client");
KV kv = client.getKV();
PutRequest.Builder request = PutRequest.newBuilder();
request.setKey(ByteString.copyFrom("key".getBytes()));
request.setValue(ByteString.copyFrom("value".getBytes()));
CompletableFuture future = kv.put(request.build());
// your code goes here.
```
## 2.3. DNS SRV
```java
final String[] endpoints = new String[]{ "dns+srv://etcd.company.cn" };
final ClientImpl.Builder builder = ClientImpl.builder();
final NameResolverFactory factory = new NameResolverFactory(endpoints);
builder.setNameResolverFactory(factory);
Client client = builder.build("my client");
// your code goes here.
```
## 2.4. Watch
```java
final String[] endpoints = new String[]{ "dns+srv://etcd.company.cn" };
final ClientImpl.Builder builder = ClientImpl.builder();
final NameResolverFactory factory = new NameResolverFactory(endpoints);
builder.setNameResolverFactory(factory);
Client client = builder.build("my client");
Watch watch = client.getWatch();
// request
WatchRequest.Builder request = WatchRequest.newBuilder();
WatchCreateRequest.Builder create = WatchCreateRequest.newBuilder();
create.setKey(ByteString.copyFrom("key".getBytes())).build();
request.setCreateRequest(create.build());
// watch
Watcher> watcher = watch.watch(request.build(), new WatchListener>() {
@Override
public void onWatched(CompletableFuture> future) {
try {
List events = future.get();
// your code goes here.
} catch (Throwable e) {
}
}
}, r -> r.getEventsList());
// your other business
watcher.close();
```