emqtt-bench能否支持用户自己输入clientid?

我的emqx服务器使用http进行验证,需要同时校验clientid、username、password。当前使用emqtt-bench进行压测时,无法自己输入clientid,导致连接服务器失败,又没有方式可以让emqtt-bench读取指定csv文件,配置为我的clientid进行连接?

可以,emqtt-bench 能控制 clientid,但不是“按 CSV 一条条读取 clientid”这种模式。
clientid 规则是 --prefix + -n/--startnumber(可选 --shortids),按序号自动生成。
例如:

./emqtt_bench conn -h <broker> -c 1000 --prefix cid_ -n 10000
./emqtt_bench sub  -h <broker> -c 1000 --prefix cid_ -n 10000 -t bench/%i

这样 clientid 会是 cid_10000cid_10001
如果你必须使用一组离散 clientid(CSV),emqtt-bench 目前没有内置能力,--topics-payload 只控制 topic/payload,不控制 clientid。
可行方案:

  1. 把 HTTP 鉴权改成接受前缀+序号规则(最省事)。
  2. 用脚本分片启动多组 emqtt-bench,不同 --prefix/-n 区间。
  3. 必须严格按 CSV 登录时,换 JMeter 这类可读数据文件的压测工具。