老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

go.cqrs中EventHandler的作用是什么

本篇文章為大家展示了go.cqrs中EventHandler的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創新互聯自2013年起,先為衢江等服務建站,衢江等地企業,進行企業商務咨詢服務。為衢江企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

EventHandler

type EventHandler interface {
	Handle(EventMessage)
}

EventHandler定義了Handle方法

EventMessage

// EventMessage is the interface that a command must implement.
type EventMessage interface {

	// AggregateID returns the ID of the Aggregate that the event relates to
	AggregateID() string

	// GetHeaders returns the key value collection of headers for the event.
	//
	// Headers are metadata about the event that do not form part of the
	// actual event but are still required to be persisted alongside the event.
	GetHeaders() map[string]interface{}

	// SetHeader sets the value of the header specified by the key
	SetHeader(string, interface{})

	// Returns the actual event which is the payload of the event message.
	Event() interface{}

	// EventType returns a string descriptor of the command name
	EventType() string

	// Version returns the version of the event
	Version() *int
}

EventMessage接口定義了AggregateID、GetHeaders、SetHeader、Event、EventType、Version方法

EventDescriptor

// EventDescriptor is an implementation of the event message interface.
type EventDescriptor struct {
	id      string
	event   interface{}
	headers map[string]interface{}
	version *int
}

// NewEventMessage returns a new event descriptor
func NewEventMessage(aggregateID string, event interface{}, version *int) *EventDescriptor {
	return &EventDescriptor{
		id:      aggregateID,
		event:   event,
		headers: make(map[string]interface{}),
		version: version,
	}
}

// EventType returns the name of the event type as a string.
func (c *EventDescriptor) EventType() string {
	return typeOf(c.event)
}

// AggregateID returns the ID of the Aggregate that the event relates to.
func (c *EventDescriptor) AggregateID() string {
	return c.id
}

// GetHeaders returns the headers for the event.
func (c *EventDescriptor) GetHeaders() map[string]interface{} {
	return c.headers
}

// SetHeader sets the value of the header specified by the key
func (c *EventDescriptor) SetHeader(key string, value interface{}) {
	c.headers[key] = value
}

// Event the event payload of the event message
func (c *EventDescriptor) Event() interface{} {
	return c.event
}

// Version returns the version of the event
func (c *EventDescriptor) Version() *int {
	return c.version
}

EventDescriptor定義了id、event、headers、version屬性,它實現了EventMessage接口

PublishEvent

// PublishEvent publishes events to all registered event handlers
func (b *InternalEventBus) PublishEvent(event EventMessage) {
	if handlers, ok := b.eventHandlers[event.EventType()]; ok {
		for handler := range handlers {
			handler.Handle(event)
		}
	}
}

InternalEventBus的PublishEvent方法會遍歷指定event.EventType()的handlers,挨個執行handler.Handle(event)方法

小結

go.cqrs的EventHandler定義了Handle方法;InternalEventBus的PublishEvent方法會遍歷指定event.EventType()的handlers,挨個執行handler.Handle(event)方法。

上述內容就是go.cqrs中EventHandler的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。


網頁標題:go.cqrs中EventHandler的作用是什么
文章出自:http://www.xueling.net.cn/article/geohgo.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 一区二区三区网址 | 不卡在线观看亚洲视频 | hhh555国产在线 | 日韩中文娱乐网 | 精品人妻无码一区二区三区打不开 | 中文字幕在线播放第一页 | 成人无码a级毛片免费 | 无遮挡亲胸捏胸免费视频 | 婷婷人人爽人人爽人人片 | 变态孕交videosgratis孕妇 | 成人午夜精品无码区久久 | 老司机精品视频在线播放 | 国产福利片在线观看 | 无遮挡亲胸捏胸免费视频 | 2019年最好看的中文免费视频 | 老司机午夜视频在线观看 | 久久躁狠狠躁夜夜AV | 97超碰人人看 | 亚洲精品网站在线观看 | www.免费网站在线观看 | 欧美精产国品一二三产品 | 大胸美女被吃奶爽死视频 | 成人精品一区二区三区免费看 | www.国产一区二区三区 | 国产欧美日韩高清 | 波多野无码黑人在线播放 | japanese36hdxxxx日韩 | 韩国18禁男男黄网站 | 久久久免费精品国产一区二区 | 韩日激情 | 伊人久久综在合线亚洲2019 | 久久不射网 | 亚洲乱码中文字幕综合区 | 国产精品白丝久久av网站 | 大伊香蕉精品一区视频在线 | 逼逼久久 | 大地资源网高清在线观看视频 | 人妻丝袜AV中文系列先锋影音 | 99国产精品永久免费视频 | 亚洲国产另类 | 老人与老人免费a级毛片 |