DE-labtory / midgard

Event sourcing library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

midgard

Event sourcing library

Bus Operation

Midgard Design Model

usage

import(
	"github.com/it-chain/midgard/bus/rabbitmq"
)

//create rabbitmq client
rabbitmqClient := rabbitmq.Connect(config.Common.Messaging.Url)
connectionHandler := NewConnectionCommandHandler(ConnectionStore, pri, pub, rabbitmqClient)

// Subscribe amqp server
// midgard를 사용하여 새 노드 연결 관련 이벤트 구독
err := rabbitmqClient.Subscribe("Command", "Connection", connectionHandler)

Message

midgard에서 다루는 메시지의 구조체이다.

MatchingValue string Data []byte

의 두 entity를 가지며 여기서 MatchingValue는 일반적으로 해당 데이터의 type의 이름을 나타낸다.

rabbitmq / Client

Client는 발생한 이벤트의 핸들러를 지정할 뿐만 아니라 해당 핸들러의 실행까지 담당한다.

Router

라우터는 data 와 handler의 이름을 받아 해당 handler를 실행한다.

SetHandler(handler interface{}) error

handler should be a struct pointer which has handler method this method register every method for event in HandlerMap so than when router is called, specific handler method deals with it.

Route(data []byte, structName string) (err error)

Route calls specific handler function in handler map with handler struct name


About

Event sourcing library


Languages

Language:Go 100.0%