github.com/argoproj/argo-events@v1.9.1/eventbus/kafka/eventsource/source_kafka.go (about) 1 package eventsource 2 3 import ( 4 "github.com/IBM/sarama" 5 eventbuscommon "github.com/argoproj/argo-events/eventbus/common" 6 "github.com/argoproj/argo-events/eventbus/kafka/base" 7 eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1" 8 "go.uber.org/zap" 9 ) 10 11 type KafkaSource struct { 12 *base.Kafka 13 topic string 14 } 15 16 func NewKafkaSource(config *eventbusv1alpha1.KafkaBus, logger *zap.SugaredLogger) *KafkaSource { 17 return &KafkaSource{ 18 Kafka: base.NewKafka(config, logger), 19 topic: config.Topic, 20 } 21 } 22 23 func (s *KafkaSource) Initialize() error { 24 return nil 25 } 26 27 func (s *KafkaSource) Connect(string) (eventbuscommon.EventSourceConnection, error) { 28 config, err := s.Config() 29 if err != nil { 30 return nil, err 31 } 32 33 // eventsource specific config 34 config.Producer.Return.Errors = true 35 config.Producer.Return.Successes = true 36 37 client, err := sarama.NewClient(s.Brokers(), config) 38 if err != nil { 39 return nil, err 40 } 41 42 producer, err := sarama.NewSyncProducerFromClient(client) 43 if err != nil { 44 return nil, err 45 } 46 47 conn := &KafkaSourceConnection{ 48 KafkaConnection: base.NewKafkaConnection(s.Logger), 49 Topic: s.topic, 50 Client: client, 51 Producer: producer, 52 } 53 54 return conn, nil 55 }