Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EventProcessor ¶
EventProcessor interface
type EventPublisher ¶
type EventPublisher interface { Open() error Close() Publish(envelop *OrderEventEnvelope) error }
EventPublisher interface
type OrderAccepted ¶
type OrderAccepted struct { OrderEvent Symbol string `json:"symbol"` Price float64 `json:"price"` Quantity uint `json:"quantity"` Direction string `json:"direction"` }
OrderAccepted defines a order accepted event
func NewOrderAccepted ¶
func NewOrderAccepted(orderID string, occured time.Time, symbol string, price float64, quantity uint, direction models.TradeDirection, version uint) *OrderAccepted
NewOrderAccepted creates a new order accepted event
func (*OrderAccepted) String ¶
func (e *OrderAccepted) String() string
type OrderAmended ¶
type OrderAmended struct { OrderEvent Quantity uint `json:"quantity"` }
OrderAmended defines a order amended event
func NewOrderAmended ¶
NewOrderAmended creates a new order amed pending event
func (*OrderAmended) String ¶
func (e *OrderAmended) String() string
type OrderCancelled ¶
type OrderCancelled struct {
OrderEvent
}
OrderCancelled defines a order cancelled event
func NewOrderCancelled ¶
func NewOrderCancelled(orderID string, occured time.Time, version uint) *OrderCancelled
NewOrderCancelled creates a new order amed pending event
func (*OrderCancelled) String ¶
func (e *OrderCancelled) String() string
type OrderEvent ¶
type OrderEvent struct { EventType OrderEventType `json:"event_type"` OrderID string `json:"id"` Occured time.Time `json:"occured"` Version uint `json:"version"` }
OrderEvent defines a order base event
func NewOrderEvent ¶
func NewOrderEvent(eventType OrderEventType, orderID string, occured time.Time, version uint) *OrderEvent
NewOrderEvent creates a new order event
func (*OrderEvent) String ¶
func (e *OrderEvent) String() string
type OrderEventEnvelope ¶
type OrderEventEnvelope struct { EventType OrderEventType `json:"event_type"` Payload string `json:"payload"` }
OrderEventEnvelope encapsulates the event send to a subscriber
func NewOrderEventEnvelope ¶
func NewOrderEventEnvelope(event interface{}, eventType OrderEventType) (*OrderEventEnvelope, error)
NewOrderEventEnvelope creates a new order event envelope from a event
func (*OrderEventEnvelope) GetOrderEvent ¶
func (e *OrderEventEnvelope) GetOrderEvent() (interface{}, error)
GetOrderEvent returns the specific order event
type OrderEventProcessor ¶
type OrderEventProcessor struct {
// contains filtered or unexported fields
}
OrderEventProcessor defines the order event struct
func NewOrderEventProcessor ¶
func NewOrderEventProcessor(url string, subExchange string, subQueue string, pubExchange string, processor func(envelope *OrderEventEnvelope) (string, error)) *OrderEventProcessor
NewOrderEventProcessor creates a new order event processor
func (*OrderEventProcessor) Close ¶
func (p *OrderEventProcessor) Close()
Close handles the closing of connection and channel
func (*OrderEventProcessor) Open ¶
func (p *OrderEventProcessor) Open() error
Open handles the opening of connection, channel, exchange and queue
func (*OrderEventProcessor) Process ¶
func (p *OrderEventProcessor) Process() error
Process starts processing events
type OrderEventStored ¶
type OrderEventStored struct {
OrderEvent
}
OrderEventStored defines a order event stored
func NewOrderEventStored ¶
func NewOrderEventStored(orderID string, occured time.Time, version uint) *OrderEventStored
NewOrderEventStored creates a new order event stored event
func (*OrderEventStored) String ¶
func (e *OrderEventStored) String() string
type OrderEventType ¶
type OrderEventType string
OrderEventType defines a order event type enumeration
const ( OrderAcceptedType OrderEventType = "OrderAccepted" OrderAmendedType OrderEventType = "OrderAmended" OrderCancelledType OrderEventType = "OrderCancelled" OrderTradedType OrderEventType = "OrderTraded" OrderEventStoredType OrderEventType = "OrderEventStored" )
Order Event type constants
func GetEventType ¶
func GetEventType(event interface{}) (OrderEventType, error)
GetEventType returns the event type from a event
type OrderTraded ¶
type OrderTraded struct { OrderEvent Price float64 `json:"price"` Quantity uint `json:"quantity"` }
OrderTraded defines a order traded event
func NewOrderTraded ¶
func NewOrderTraded(orderID string, occured time.Time, price float64, quantity uint, version uint) *OrderTraded
NewOrderTraded creates a new order traded event
func (*OrderTraded) String ¶
func (e *OrderTraded) String() string
type RabbitMqEventPublisher ¶
type RabbitMqEventPublisher struct {
// contains filtered or unexported fields
}
RabbitMqEventPublisher create implementation of a rabbit mq order event publisher
func NewRabbitMqEventPublisher ¶
func NewRabbitMqEventPublisher(url string, exchange string) *RabbitMqEventPublisher
NewRabbitMqEventPublisher creates a new rabbit mq event publisher
func (*RabbitMqEventPublisher) Close ¶
func (p *RabbitMqEventPublisher) Close()
Close handles the connection and channel closing
func (*RabbitMqEventPublisher) Open ¶
func (p *RabbitMqEventPublisher) Open() error
Open handles the opening of a connection, setting up a channel and declaring a exchange
func (*RabbitMqEventPublisher) Publish ¶
func (p *RabbitMqEventPublisher) Publish(envelope *OrderEventEnvelope) error
Publish publishes a order event envelope