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  }