package main import ( "context" "log" "net" "os" "os/signal" "strconv" "syscall" server "test3k/authPostman/internal" "test3k/authPostman/internal/config" "github.com/segmentio/kafka-go" ) func main() { config := config.NewConfig() ctx, _ := context.WithCancel(context.Background()) srv := server.NewServer(ctx, config) // signalChannel := make(chan os.Signal, 1) signal.Notify(signalChannel, syscall.SIGINT) signal.Notify(signalChannel, syscall.SIGTERM) defer stop(signalChannel, srv) // Запуск сервера go start(config, srv) // for { select { case <-signalChannel: return case <-ctx.Done(): return } } } // Остановка сервера func stop(signalChannel chan os.Signal, srv *server.AuthPostmanServer) { defer srv.GracefulStop() defer signal.Stop(signalChannel) log.Println("authPostmanServer stopping ...") } // Запуск сервера func start(config *config.Config, srv *server.AuthPostmanServer) { connStr := net.JoinHostPort(config.Kafka.Host, strconv.Itoa(config.Kafka.Port)) // log.Printf("authPostmanServer starting (listening to %s)\n", connStr) // r := kafka.NewReader(kafka.ReaderConfig{ Topic: "registrations", Brokers: []string{connStr}, GroupID: "consumer-group-id", Partition: 0, MinBytes: 10e3, // 10KB MaxBytes: 10e6, // 10MB }) defer r.Close() // ... r.SetOffset(0) for { m, err := r.ReadMessage(context.Background()) if err != nil { break } log.Printf("message at offset %d: %s = %s\n", m.Offset, string(m.Key), string(m.Value)) } }