go-micro broker 消息的订阅和发布

  broker是用于消息的订阅和发布,即异步处理,不过通常会使用队列方式替代,很少使用go-micro的broker

  默认是http方式

// 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
}

// Handler is used to process messages via a subscription of a topic.
// The handler is passed a publication interface which contains the
// message and optional Ack method to acknowledge receipt of the message.
type Handler func(Publication) error

type Message struct {
        Header map[string]string
        Body   []byte
}

// Publication is given to a subscription handler for processing
type Publication interface {
        Topic() string
        Message() *Message
        Ack() error
}

// Subscriber is a convenience return type for the Subscribe method
type Subscriber interface {
        Options() SubscribeOptions
        Topic() string
        Unsubscribe() error
}