74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package kgo
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"net"
 | |
| 	"sync/atomic"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/twmb/franz-go/pkg/kgo"
 | |
| 	"go.unistack.org/micro/v3/logger"
 | |
| )
 | |
| 
 | |
| type hookEvent struct {
 | |
| 	log          logger.Logger
 | |
| 	connected    *atomic.Uint32
 | |
| 	fatalOnError bool
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	_ kgo.HookBrokerConnect           = &hookEvent{}
 | |
| 	_ kgo.HookBrokerDisconnect        = &hookEvent{}
 | |
| 	_ kgo.HookBrokerRead              = &hookEvent{}
 | |
| 	_ kgo.HookBrokerWrite             = &hookEvent{}
 | |
| 	_ kgo.HookGroupManageError        = &hookEvent{}
 | |
| 	_ kgo.HookProduceRecordUnbuffered = &hookEvent{}
 | |
| )
 | |
| 
 | |
| func (m *hookEvent) OnGroupManageError(err error) {
 | |
| 	switch {
 | |
| 	case err == nil || isContextError(err) || kgo.IsRetryableBrokerErr(err):
 | |
| 		return
 | |
| 	default:
 | |
| 		m.log.Error(context.TODO(), "kgo.OnGroupManageError", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (m *hookEvent) OnBrokerConnect(_ kgo.BrokerMetadata, _ time.Duration, _ net.Conn, err error) {
 | |
| 	switch {
 | |
| 	case err == nil || isContextError(err) || kgo.IsRetryableBrokerErr(err):
 | |
| 		return
 | |
| 	default:
 | |
| 		m.log.Error(context.TODO(), "kgo.OnBrokerConnect", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (m *hookEvent) OnBrokerDisconnect(_ kgo.BrokerMetadata, _ net.Conn) {}
 | |
| 
 | |
| func (m *hookEvent) OnBrokerWrite(_ kgo.BrokerMetadata, _ int16, _ int, _ time.Duration, _ time.Duration, err error) {
 | |
| 	switch {
 | |
| 	case err == nil || isContextError(err) || kgo.IsRetryableBrokerErr(err):
 | |
| 		return
 | |
| 	default:
 | |
| 		m.log.Error(context.TODO(), "kgo.OnBrokerWrite", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (m *hookEvent) OnBrokerRead(_ kgo.BrokerMetadata, _ int16, _ int, _ time.Duration, _ time.Duration, err error) {
 | |
| 	switch {
 | |
| 	case err == nil || isContextError(err) || kgo.IsRetryableBrokerErr(err):
 | |
| 		return
 | |
| 	default:
 | |
| 		m.log.Error(context.TODO(), "kgo.OnBrokerRead", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (m *hookEvent) OnProduceRecordUnbuffered(_ *kgo.Record, err error) {
 | |
| 	switch {
 | |
| 	case err == nil || isContextError(err) || kgo.IsRetryableBrokerErr(err):
 | |
| 		return
 | |
| 	default:
 | |
| 		m.log.Error(context.TODO(), "kgo.OnProduceRecordUnbuffered", err)
 | |
| 	}
 | |
| }
 |