前一篇文章,我们讨论了在micro中如何发布/订阅消息。它的优点是简单,缺点是缺乏灵活性。如果你想使用底层去发送与接收消息,需要使用接口:github.com/micro/go-micro/v2/broker.Broker
这个接口是micro异步消息处理的核心,事实上,发布/订阅也依赖它
下面,使用一个例子来使用Broker
package main
import (
"fmt"
"github.com/micro/go-micro/v2"
"github.com/micro/go-micro/v2/broker"
"log"
"time"
)
var topic string = "com.foo.topic"
func pub(brk broker.Broker) {
i := 0
for range time.Tick(time.Second) {
msg := &broker.Message{
Header: map[string]string{
"id" : fmt.Sprintf("%d", i)},
Body: []byte(fmt.Sprintf("%d:%s", i, time.Now().String())),
}
if err := brk.Publish(topic,msg); err != nil {
log.Printf("[pub] failed: %v\n", err)
} else {
log.Printf("[pub] pubbed message:%s\n", string(msg.Body))
}
i++
}
}
func sub(brk broker.Broker) {
_, err := brk.Subscribe(topic, func(event broker.Event) error {
fmt.Println("[sub] received message:", string(event.Message().Body), ", header:", event.Message().Header)
return nil
}, broker.Queue(topic))</