saga

package
v0.0.0-...-daf8b82 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2022 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SagaTransaction

func SagaTransaction(ctx context.Context, cli *GrpcClient, expire time.Time,
	branches func(t *Transaction, gtid string) error) (*pb.SagaResponse, error)

SagaTransaction start a transaction as a block,

return SagaResponse and error, transaction rolled back if it is not nil,
SagaResponse describes states of saga transaction

func WithConstantRetry

func WithConstantRetry(dur time.Duration) branchFunctions

WithConstantRetry set constant retry duration

func WithMaxRetry

func WithMaxRetry(times int) branchFunctions

WithMaxRetry set max retry times

func WithTimeout

func WithTimeout(to time.Duration) branchFunctions

WithTimeout set timeout for branch transaction

Types

type GrpcClient

type GrpcClient struct {
	pb.TcClient
}

GrpcClient is grpc client of SAGA AP

func NewGrpcClient

func NewGrpcClient(target string) (*GrpcClient, error)

NewGrpcClient create a grpc client

target is address of grpc server

type HttpClient

type HttpClient struct {
	TcServer string
}

HttpClient is http client of AP

func (*HttpClient) Commit

func (cli *HttpClient) Commit(ctx context.Context, req *define.SagaRequest) (*define.SagaResponse, error)

Commit commit saga transaction

func (*HttpClient) Get

func (cli *HttpClient) Get(ctx context.Context, gtid string) (*define.SagaResponse, error)

Get get states of saga transaction

func (*HttpClient) NewGtid

func (cli *HttpClient) NewGtid(ctx context.Context) (string, error)

NewGtid create a unique identifier for transaction

type Transaction

type Transaction struct {
	Request pb.SagaRequest
	// contains filtered or unexported fields
}

Transaction A distributed SAGA transaction

func (*Transaction) Abort

func (t *Transaction) Abort()

func (*Transaction) AddGrpcBranch

func (t *Transaction) AddGrpcBranch(branchID int, rmServer string,
	commitAction string, compensationAction string,
	payload proto.Message,
	opts ...branchFunctions)

AddGrpcBranch create a branch transaction for RM(resource manager) which is a grpc server

branchID is unique identifier, ensure it is unique in a saga transaction
rmServer is grpc target of RM,
commitAction is grpc method to commit branch transaction
compensationAction is grpc method to compensate branch transaction
payload is request of grpc method to commit or compensate

func (*Transaction) AddHttpBranch

func (t *Transaction) AddHttpBranch(branchID int,
	commitAction string, compensationAction string,
	payload []byte,
	opts ...branchFunctions)

AddHttpBranch create a branch transaction for RM(resource manager) which is a http server

branchID is unique identifier, ensure it is unique in a saga transaction
commitAction is URL to commit branch transaction with http POST method
compensationAction is URL to compensate branch transaction with http DELETE method
payload is http request body for commit or compensate actions

func (*Transaction) SetGrpcNotify

func (t *Transaction) SetGrpcNotify(grpcServer string, action string, timeout, retry time.Duration)

func (*Transaction) SetHttpNotify

func (t *Transaction) SetHttpNotify(action string, timeout, retry time.Duration)

Jump to

Keyboard shortcuts

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