github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/broker/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "log" 6 "time" 7 8 "github.com/micro/go-micro/v2/broker" 9 "github.com/micro/go-micro/v2/config/cmd" 10 ) 11 12 var ( 13 topic = "go.micro.topic.foo" 14 ) 15 16 func pub() { 17 tick := time.NewTicker(time.Second) 18 i := 0 19 for _ = range tick.C { 20 msg := &broker.Message{ 21 Header: map[string]string{ 22 "id": fmt.Sprintf("%d", i), 23 }, 24 Body: []byte(fmt.Sprintf("%d: %s", i, time.Now().String())), 25 } 26 if err := broker.Publish(topic, msg); err != nil { 27 log.Printf("[pub] failed: %v", err) 28 } else { 29 fmt.Println("[pub] pubbed message:", string(msg.Body)) 30 } 31 i++ 32 } 33 } 34 35 func sub() { 36 _, err := broker.Subscribe(topic, func(p broker.Event) error { 37 fmt.Println("[sub] received message:", string(p.Message().Body), "header", p.Message().Header) 38 return nil 39 }) 40 if err != nil { 41 fmt.Println(err) 42 } 43 } 44 45 func main() { 46 cmd.Init() 47 48 if err := broker.Init(); err != nil { 49 log.Fatalf("Broker Init error: %v", err) 50 } 51 if err := broker.Connect(); err != nil { 52 log.Fatalf("Broker Connect error: %v", err) 53 } 54 55 go pub() 56 go sub() 57 58 <-time.After(time.Second * 10) 59 }