// joinGroup joins a consumer group and returns the group memberID and generationID func joinGroup(broker *sarama.Broker, group string, topic string) (string, int32) { joinGroupReq := &sarama.JoinGroupRequest{ GroupId: group, SessionTimeout: int32((30 * time.Second) / time.Millisecond), ProtocolType: "consumer", } meta := &sarama.ConsumerGroupMemberMetadata{ Version: 1, Topics: []string{topic}, } err := joinGroupReq.AddGroupProtocolMetadata("range", meta) if err != nil { fmt.Fprintf(os.Stderr, "Failed to add meta data err=%v\n", err) os.Exit(1) } err = joinGroupReq.AddGroupProtocolMetadata("roundrobin", meta) if err != nil { fmt.Fprintf(os.Stderr, "Failed to add meta data err=%v\n", err) os.Exit(1) } resp, err := broker.JoinGroup(joinGroupReq) if err != nil { fmt.Fprintf(os.Stderr, "Failed to join consumer group err=%v\n", err) os.Exit(1) } else if resp.Err != sarama.ErrNoError { fmt.Fprintf(os.Stderr, "Failed to join consumer group err=%v\n", resp.Err) os.Exit(1) } return resp.MemberId, resp.GenerationId }