我的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_10000、cid_10001 …
如果你必须使用一组离散 clientid(CSV),emqtt-bench 目前没有内置能力,--topics-payload 只控制 topic/payload,不控制 clientid。
可行方案:
- 把 HTTP 鉴权改成接受前缀+序号规则(最省事)。
- 用脚本分片启动多组 emqtt-bench,不同
--prefix/-n区间。 - 必须严格按 CSV 登录时,换 JMeter 这类可读数据文件的压测工具。