func main() { parseArgs() go_kafka_client.Logger = go_kafka_client.NewDefaultLogger(go_kafka_client.ErrorLevel) kafkaProducer = producer.NewKafkaProducer(writeTopic, []string{broker}) //Coordinator settings zookeeperConfig := go_kafka_client.NewZookeeperConfig() zookeeperConfig.ZookeeperConnect = []string{zookeeper} //Actual consumer settings consumerConfig := go_kafka_client.DefaultConsumerConfig() consumerConfig.AutoOffsetReset = go_kafka_client.SmallestOffset consumerConfig.Coordinator = go_kafka_client.NewZookeeperCoordinator(zookeeperConfig) consumerConfig.Groupid = group consumerConfig.NumWorkers = 1 consumerConfig.NumConsumerFetchers = 1 consumerConfig.KeyDecoder = go_kafka_client.NewKafkaAvroDecoder(schemaRepo) consumerConfig.ValueDecoder = consumerConfig.KeyDecoder consumerConfig.Strategy = func(worker *go_kafka_client.Worker, message *go_kafka_client.Message, taskId go_kafka_client.TaskId) go_kafka_client.WorkerResult { time.Sleep(2 * time.Second) record, ok := message.DecodedValue.(*avro.GenericRecord) if !ok { panic("Not a *GenericError, but expected one") } fmt.Printf("golang > received %s\n", fmt.Sprintf("{\"counter\": %d, \"name\": \"%s\", \"uuid\": \"%s\"}", record.Get("counter"), record.Get("name"), record.Get("uuid"))) modify(record) encoded, err := encoder.Encode(record) if err != nil { panic(err) } if err := kafkaProducer.SendBytesSync(encoded); err != nil { panic(err) } return go_kafka_client.NewSuccessfulResult(taskId) } consumerConfig.WorkerFailureCallback = func(_ *go_kafka_client.WorkerManager) go_kafka_client.FailedDecision { return go_kafka_client.CommitOffsetAndContinue } consumerConfig.WorkerFailedAttemptCallback = func(_ *go_kafka_client.Task, _ go_kafka_client.WorkerResult) go_kafka_client.FailedDecision { return go_kafka_client.CommitOffsetAndContinue } kafkaConsumer = go_kafka_client.NewConsumer(consumerConfig) pingPongLoop() }
func setLogLevel(logLevel string) { var level kafkaClient.LogLevel switch strings.ToLower(logLevel) { case "trace": level = kafkaClient.TraceLevel case "debug": level = kafkaClient.DebugLevel case "info": level = kafkaClient.InfoLevel case "warn": level = kafkaClient.WarnLevel case "error": level = kafkaClient.ErrorLevel case "critical": level = kafkaClient.CriticalLevel default: level = kafkaClient.InfoLevel } kafkaClient.Logger = kafkaClient.NewDefaultLogger(level) }
func setLogLevel() { var level kafka.LogLevel switch strings.ToLower(*logLevel) { case "trace": level = kafka.TraceLevel case "debug": level = kafka.DebugLevel case "info": level = kafka.DebugLevel case "warn": level = kafka.DebugLevel case "error": level = kafka.DebugLevel case "critical": level = kafka.DebugLevel default: { fmt.Printf("Invalid log level: %s\n", *logLevel) os.Exit(1) } } kafka.Logger = kafka.NewDefaultLogger(level) }