sagamaton

package module
v0.0.0-...-9a7d0be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2019 License: MIT Imports: 3 Imported by: 0

README

saga-maton

saga pattern implementation like finite state machine

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Action

type Action func([]interface{}) error

Action provides function for each state.

type ExecutionID

type ExecutionID string

ExecutionID provides identifier for Executor.

type Executor

type Executor struct {
	// contains filtered or unexported fields
}

Executor provides state machine runner.

type ExecutorFactory

type ExecutorFactory struct {
	// contains filtered or unexported fields
}

ExecutorFactory provides building Executor from sub-transactions with Finite State Machine.

func NewDefaultExecutorFactory

func NewDefaultExecutorFactory(reg SagaRegistry) *ExecutorFactory

NewDefaultExecutorFactory returns new ExecutorFactory object, which uses default id dispenser.

func NewExecutorFactory

func NewExecutorFactory(reg SagaRegistry, dispenser SagaExecutionIDDispenser) *ExecutorFactory

NewExecutorFactory returns new ExecutorFactory object.

func (*ExecutorFactory) NewExecutor

func (f *ExecutorFactory) NewExecutor(sig Signature) (*Executor, error)

NewExecutor returns Executor object.

type Saga

type Saga struct {
	// contains filtered or unexported fields
}

Saga provides binding sub-transactions for event driven tasks.

func NewSaga

func NewSaga(sig Signature, txns ...*SubTransaction) *Saga

NewSaga returns Saga object.

func (*Saga) Signature

func (s *Saga) Signature() Signature

Signature returns Signature.

func (*Saga) SubTransactions

func (s *Saga) SubTransactions() []*SubTransaction

SubTransactions returns sub-transactions list.

type SagaExecutionIDDispenser

type SagaExecutionIDDispenser interface {
	DispenseID() ExecutionID
}

SagaExecutionIDDispenser provides interface for Executor id dispenser.

type SagaRegistry

type SagaRegistry interface {
	Store(*Saga) error
	Load(Signature) (*Saga, error)
}

SagaRegistry provides interface for Saga transactions storage.

type Signature

type Signature string

Signature represents key for finding saga.

type SubTransaction

type SubTransaction struct {
	// contains filtered or unexported fields
}

SubTransaction provides Action binding when forward and compensating.

func (SubTransaction) CompensatingAction

func (s SubTransaction) CompensatingAction() Action

CompensatingAction returns Action for compensating operation.

func (SubTransaction) ForwardAction

func (s SubTransaction) ForwardAction() Action

ForwardAction returns Action for forward operation.

func (SubTransaction) Name

func (s SubTransaction) Name() string

Name returns sub-transaction name.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL