1. 发布订阅
前言: 用 Go Micro 的发布订阅构建事件驱动的微服务
2. 概述
微服务是一种事件驱动的体系结构模式, 因此 Go Micro 使用消息代理接口构建异步消息的概念. 它可为您无缝地运行 protobuf 类型. 自动编码和解码消息, 因为它们从代理发送和接收.
默认情况下, go-micro 包括点对点 http 代理, 但可以通过 go-plugins 置换实现.
2.1.1. 发布消息
使用 topic
名称和服务客户端创建一个新的发布者
p := micro.NewEvent("events", service.Client())
发布 proto 消息
p.Publish(context.TODO(), &proto.Event{Name: "event"})
2.1.2. 订阅
创建消息处理程序. 它的签名应该是 func(context.Context, v interface{}) error
func ProcessEvent(ctx context.Context, event *proto.Event) error {
fmt.Printf("Got event %+v\n", event)
return nil
}
使用 topic
注册消息处理程序
micro.RegisterSubscriber("events", ProcessEvent)
有关完整示例, 可参阅 examples/pubsub