...
1 package etcd
2
3 import (
4 "context"
5 "io"
6 "time"
7
8 "github.com/go-kit/kit/endpoint"
9 "github.com/go-kit/kit/sd"
10 "github.com/go-kit/kit/sd/lb"
11 "github.com/go-kit/log"
12 )
13
14 func Example() {
15
16
17 var (
18 etcdServer = "http://10.0.0.1:2379"
19 prefix = "/services/foosvc/"
20 instance = "1.2.3.4:8080"
21 key = prefix + instance
22 value = "http://" + instance
23 ctx = context.Background()
24 )
25
26
27 client, err := NewClient(ctx, []string{etcdServer}, ClientOptions{})
28 if err != nil {
29 panic(err)
30 }
31
32
33 registrar := NewRegistrar(client, Service{
34 Key: key,
35 Value: value,
36 }, log.NewNopLogger())
37
38
39 registrar.Register()
40
41
42
43
44
45 defer registrar.Deregister()
46
47
48
49
50
51
52 barPrefix := "/services/barsvc"
53 logger := log.NewNopLogger()
54 instancer, err := NewInstancer(client, barPrefix, logger)
55 if err != nil {
56 panic(err)
57 }
58 endpointer := sd.NewEndpointer(instancer, barFactory, logger)
59 balancer := lb.NewRoundRobin(endpointer)
60 retry := lb.Retry(3, 3*time.Second, balancer)
61
62
63 req := struct{}{}
64 if _, err = retry(ctx, req); err != nil {
65 panic(err)
66 }
67 }
68
69 func barFactory(string) (endpoint.Endpoint, io.Closer, error) { return endpoint.Nop, nil, nil }
70
View as plain text