github.com/Anderson-Lu/gobox@v0.0.0-20191127065433-3e6c4c2da420/middleware/kafka/kafka_helper.go (about) 1 package kafka 2 3 import ( 4 "encoding/json" 5 "log" 6 "time" 7 8 "github.com/Shopify/sarama" 9 ) 10 11 type KafkaProducer struct { 12 address []string 13 syncProducer sarama.SyncProducer 14 } 15 16 //实例化kafka 17 func NewKafkaProducer(address []string) (*KafkaProducer, error) { 18 config := sarama.NewConfig() 19 config.Producer.Return.Successes = true 20 config.Producer.Timeout = 5 * time.Second 21 p, err := sarama.NewSyncProducer(address, config) 22 if err != nil { 23 log.Printf("sarama.NewSyncProducer err, message=%s \n", err) 24 return nil, err 25 } 26 return &KafkaProducer{ 27 address: address, 28 syncProducer: p, 29 }, nil 30 } 31 32 //同步发送 33 func (self *KafkaProducer) SyncSend(data interface{}, topic string) (int32, int64, error) { 34 bs, err := json.Marshal(data) 35 if err != nil { 36 return -1, -1, err 37 } 38 msg := &sarama.ProducerMessage{ 39 Topic: topic, 40 Value: sarama.ByteEncoder(bs), 41 } 42 part, offset, err := self.syncProducer.SendMessage(msg) 43 return part, offset, err 44 }