/
client.go
52 lines (48 loc) · 1.19 KB
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package main
import (
"encoding/json"
"flag"
"github.com/deepglint/nsqelastic/models"
"github.com/franela/goreq"
"github.com/nsqio/go-nsq"
"log"
"strconv"
)
var (
eaddr = flag.String("eaddr", "", "The elastic addr")
topic = flag.String("topic", "", "The topic you wanna sub")
channel = flag.String("channel", "", "The channel you wanna sub")
consumer *nsq.Consumer
cfg = nsq.NewConfig()
addr string
exitchan chan bool
)
func main() {
flag.Parse()
if *eaddr == "" || *topic == "" || *channel == "" {
log.Println("Please input the elastic addr or topic or channel")
return
}
res, err := goreq.Request{Uri: *eaddr + "?topic=" + *topic + "&channel=" + *channel}.Do()
if err != nil {
log.Println(err.Error())
}
var v models.NodeItem
body, _ := res.Body.ToString()
log.Println(body)
err = json.Unmarshal([]byte(body), &v)
if err != nil {
log.Fatal(err.Error())
}
addr = v.Ip + ":" + strconv.Itoa(v.Tcpport)
consumer, err = nsq.NewConsumer(*topic, *channel, cfg)
if err != nil {
log.Fatal(err.Error())
}
consumer.AddHandler(nsq.HandlerFunc(func(m *nsq.Message) error {
log.Println(string(m.Body))
return nil
}))
consumer.ConnectToNSQD(addr)
<-exitchan
}