package main import ( "flag" "fmt" "os" "os/signal" "syscall" "time" "git.asio.asia/nixevol/NixMsg/test/load" ) // 压测客户端骨架:连上 N 个 MQTT 连接并打印连接数。完整 1000 连接 / 10 分钟压测留给 Q3。 func main() { addr := flag.String("addr", "", "MQTT broker host:port(必填,不要写死业务端口)") n := flag.Int("n", 10, "连接数") prefix := flag.String("prefix", "q-bench-", "client id 前缀") hold := flag.Duration("hold", 3*time.Second, "保持连接时长") flag.Parse() if *addr == "" { fmt.Fprintln(os.Stderr, "usage: mqttbench -addr host:port [-n 10]") os.Exit(2) } b := &load.MQTTBench{Addr: *addr, ClientIDPrefix: *prefix, Timeout: 5 * time.Second} defer b.Close() if err := b.ConnectN(*n, os.Stdout); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } fmt.Printf("held %d connections for %s\n", b.Alive(), hold.String()) ch := make(chan os.Signal, 1) signal.Notify(ch, os.Interrupt, syscall.SIGTERM) select { case <-time.After(*hold): case <-ch: } }