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