Go实现微服务异步消息通信(一)Broker

本文深入探讨了Go实现微服务异步消息通信的两种方式,首先分析了go-micro内存实现的Broker,包括NewBroker、Connect、Disconnect、Publish和Subscribe的详细操作。然后介绍了基于HTTP的实现,重点讨论了httpSubscriber和httpBroker的工作流程,指出httpBroker高度依赖registry服务发现功能。文章以源码解读和流程图的形式,为读者提供了深入理解go-micro异步消息通信的途径。
摘要由CSDN通过智能技术生成

先学习一下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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值