先学习一下go-micro源码
先贴出Broker接口定义:
// Broker is an interface used for asynchronous messaging.
type Broker interface {
Options() Options
Address() string
Connect() error
Disconnect() error
Init(...Option) error
Publish(string, *Message, ...PublishOption) error
Subscribe(string, Handler, ...SubscribeOption) (Subscriber, error)
String() string
}
首先是基于内存的实现
源码位于: https://github.com/micro/go-micro/tree/master/broker/memory
type memoryBroker struct {
opts broker.Options
sync.RWMutex
connected bool
Subscribers map[string][]*memorySubscriber
}
基于内存的实现很简单
- NewBroker,只是创建一个memoryBroker实例然后初始化opts和Subscribers。
- Connect和Disconnect都只是简单的用一下读写锁,然后判断memoryBroker的connected,如果可以connect/disconnect,则对应修改connected。