zoukankan      html  css  js  c++  java
  • mqtt服务压力测试

    import (
        "flag"
        "fmt"
        "sync"
        "time"
        //导入mqtt包
        MQTT "github.com/eclipse/paho.mqtt.golang"
    )
    
    var f MQTT.MessageHandler = func(client MQTT.Client, msg MQTT.Message) {
        fmt.Printf("TOPIC: %s
    ", msg.Topic())
        fmt.Printf("MSG: %s
    ", msg.Payload())
    }
    var fail_nums int = 0
    
    func main() {
        //生成连接的客户端数
        c := flag.Uint64("n", 3000, "client nums")
        flag.Parse()
        nums := int(*c)
        wg := sync.WaitGroup{}
        for i := 0; i < nums; i++ {
            wg.Add(1)
            time.Sleep(5 * time.Millisecond)
            go createTask(i, &wg)
        }
        wg.Wait()
    }
    
    func createTask(taskId int, wg *sync.WaitGroup) {
        defer wg.Done()
        opts := MQTT.NewClientOptions().AddBroker("tcp://192.168.1.110:1883").SetUsername("test").SetPassword("test")
        opts.SetClientID(fmt.Sprintf("go-simple-client:%d-%d", taskId, time.Now().Unix()))
        opts.SetDefaultPublishHandler(f)
        opts.SetConnectTimeout(time.Duration(60) * time.Second)
    
        //创建连接
        c := MQTT.NewClient(opts)
    
        if token := c.Connect(); token.WaitTimeout(time.Duration(60)*time.Second) && token.Wait() && token.Error() != nil {
            fail_nums++
            fmt.Printf("taskId:%d,fail_nums:%d,error:%s 
    ", taskId, fail_nums, token.Error())
            return
        }
    
        //每隔5秒向topic发送一条消息
        i := 0
        for {
            i++
            time.Sleep(time.Duration(5) * time.Second)
            text := fmt.Sprintf("this is msg #%d! from task:%d", i, taskId)
            token := c.Publish("test", 1, false, text)
            token.Wait()
        }
    
        c.Disconnect(250)
        fmt.Println("task ok!!")
    }
    

      

  • 相关阅读:
    strip()、rstrip()和lstrip()
    Vim 中快速移动系列(1)
    Python中的read(), readline(), readlines()
    Python 列表解析(列表生成式)
    Python lambda 表达式介绍
    Python中sort()和sorted()的区别
    js 高级
    maven学习笔记
    Maven之settings.xml详解
    Eclipse 学习笔记
  • 原文地址:https://www.cnblogs.com/dqh123/p/13225615.html
Copyright © 2011-2022 走看看