func runPublisher(startwg, donewg *sync.WaitGroup, opts nats.Options, numMsgs int, msgSize int) { nc, err := opts.Connect() if err != nil { log.Fatalf("Can't connect: %v\n", err) } defer nc.Close() startwg.Done() args := flag.Args() subj := args[0] var msg []byte if msgSize > 0 { msg = make([]byte, msgSize) } start := time.Now() for i := 0; i < numMsgs; i++ { nc.Publish(subj, msg) } nc.Flush() benchmark.AddPubSample(bench.NewSample(numMsgs, msgSize, start, time.Now(), nc)) donewg.Done() }
func runSubscriber(startwg, donewg *sync.WaitGroup, opts nats.Options, numMsgs int, msgSize int) { nc, err := opts.Connect() if err != nil { log.Fatalf("Can't connect: %v\n", err) } args := flag.Args() subj := args[0] received := 0 start := time.Now() nc.Subscribe(subj, func(msg *nats.Msg) { received++ if received >= numMsgs { benchmark.AddSubSample(bench.NewSample(numMsgs, msgSize, start, time.Now(), nc)) donewg.Done() nc.Close() } }) nc.Flush() startwg.Done() }