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  }