Documentation
¶
Index ¶
- func SagaTransaction(ctx context.Context, cli *GrpcClient, expire time.Time, ...) (*pb.SagaResponse, error)
- func WithConstantRetry(dur time.Duration) branchFunctions
- func WithMaxRetry(times int) branchFunctions
- func WithTimeout(to time.Duration) branchFunctions
- type GrpcClient
- type HttpClient
- type Transaction
- func (t *Transaction) Abort()
- func (t *Transaction) AddGrpcBranch(branchID int, rmServer string, commitAction string, compensationAction string, ...)
- func (t *Transaction) AddHttpBranch(branchID int, commitAction string, compensationAction string, payload []byte, ...)
- func (t *Transaction) SetGrpcNotify(grpcServer string, action string, timeout, retry time.Duration)
- func (t *Transaction) SetHttpNotify(action string, timeout, retry time.Duration)
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 ¶
WithConstantRetry set constant retry duration
func WithTimeout ¶
WithTimeout set timeout for branch transaction
Types ¶
type GrpcClient ¶
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
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)
Click to show internal directories.
Click to hide internal directories.