github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/broker/producer/producer.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  	// To enable rabbitmq plugin uncomment
    11  	//_ "github.com/micro/go-plugins/broker/rabbitmq"
    12  )
    13  
    14  var (
    15  	topic = "go.micro.topic.foo"
    16  )
    17  
    18  func pub() {
    19  	tick := time.NewTicker(time.Second)
    20  	i := 0
    21  	for _ = range tick.C {
    22  		msg := &broker.Message{
    23  			Header: map[string]string{
    24  				"id": fmt.Sprintf("%d", i),
    25  			},
    26  			Body: []byte(fmt.Sprintf("%d: %s", i, time.Now().String())),
    27  		}
    28  		if err := broker.Publish(topic, msg); err != nil {
    29  			log.Printf("[pub] failed: %v", err)
    30  		} else {
    31  			fmt.Println("[pub] pubbed message:", string(msg.Body))
    32  		}
    33  		i++
    34  	}
    35  }
    36  
    37  func main() {
    38  	cmd.Init()
    39  
    40  	if err := broker.Init(); err != nil {
    41  		log.Fatalf("Broker Init error: %v", err)
    42  	}
    43  
    44  	if err := broker.Connect(); err != nil {
    45  		log.Fatalf("Broker Connect error: %v", err)
    46  	}
    47  
    48  	pub()
    49  }