问题描述
做为平台端,往往需要高速发布的mqtt信息,目前两种方式可以进行发布:
1、使用mqtt客户端发布;
2、使用 manage的发布api进行http发布;
未进行webhook对接的时候,单个mqtt客户端可以支持到1w tps,http发布大概是4k的tps;但接入webHook服务后,mqtt客户端的tps下降到1.8k的tps。对于平台端,我们认为无状态的http发布更有优势,但苦于eqmx的http发布服务的吞吐率有限(上限4k的tps),如果能支持grpc发布协议,对平台端就更好友且性能会有提高。
HTTP 的 TPS 确实有一定局限性…
你试下批量发送的方法呢 HTTP API | EMQ Docs
这也是一个好点子,不过客户端的工作量比较多:需要自己根据时间范围合并消息。
我们的业务是多个用户请求,每个用户一次请求就是一条消息,合并消息对我们来说是比较困难的,因为不同消息不在一个请求上下文
中间起个线程(或者线程池)。每等 10ms 或者 100 条消息,就把自己的队列打包发出去,这样就实现批量了。
成功发送到 emqx 后再给,调用者回个发送成功就行了。
主要是一个多线程同步的编程。
还不如维护mqtt客户端连接池,哪个客户端有空就用哪个发送
1 个赞