1// 2// Clone server Model One 3// 4 5package main 6 7import ( 8 zmq "github.com/pebbe/zmq4" 9 "github.com/pebbe/zmq4/examples/kvsimple" 10 11 "fmt" 12 "math/rand" 13 "time" 14) 15 16func main() { 17 // Prepare our context and publisher socket 18 publisher, _ := zmq.NewSocket(zmq.PUB) 19 publisher.Bind("tcp://*:5556") 20 time.Sleep(200 * time.Millisecond) 21 22 kvmap := make(map[string]*kvsimple.Kvmsg) 23 rand.Seed(time.Now().UnixNano()) 24 25 sequence := int64(1) 26 for ; true; sequence++ { 27 // Distribute as key-value message 28 kvmsg := kvsimple.NewKvmsg(sequence) 29 kvmsg.SetKey(fmt.Sprint(rand.Intn(10000))) 30 kvmsg.SetBody(fmt.Sprint(rand.Intn(1000000))) 31 err := kvmsg.Send(publisher) 32 kvmsg.Store(kvmap) 33 if err != nil { 34 break 35 } 36 } 37 fmt.Printf("Interrupted\n%d messages out\n", sequence) 38} 39