github.com/Goboolean/common@v0.0.0-20231130153141-cb54596b217d/deprecated/kafka/transaction.go (about) 1 package kafka 2 3 import ( 4 "context" 5 6 "github.com/Goboolean/common/pkg/resolver" 7 "github.com/IBM/sarama" 8 ) 9 10 type Transaction struct { 11 session sarama.SyncProducer 12 ctx context.Context 13 } 14 15 func (d *Transaction) Commit() error { 16 return d.session.CommitTxn() 17 } 18 19 func (d *Transaction) Rollback() error { 20 return d.session.AbortTxn() 21 } 22 23 func (d *Transaction) Context() context.Context { 24 return d.ctx 25 } 26 27 func (d *Transaction) Transaction() interface{} { 28 return d.session 29 } 30 31 func NewTransaction(session sarama.SyncProducer, ctx context.Context) resolver.Transactioner { 32 if err := session.BeginTxn(); err != nil { 33 panic(err) 34 } 35 return &Transaction{session: session, ctx: ctx} 36 }