业务系统服务(Spring boot 应用)应该使用何种方式向mqtt 下发高频的数据?

各个emq 的大大们,请教个问题。

我的业务场景是这样子,在中国,我司大约有100w打印设备,日活大约30w左右。这些打印设备白天需要随时保持在线,然后等待业务系统(6台实例)下发打印请求(10k每条)。我们打算使用emqx 来作为mqtt服务端方案。这30w设备,每天要处理1000w左右的打印请求。

但是我调研了阿里的物联网平台,发现它业务服务,并没有直接使用mqtt client(paho),而是通过提供https api 接口给业务系统使用。 也就是说,业务系统是不建议直接使用mqtt client 去连接它的物联网平台。

那么我想问,假设不能mqtt client。 我如何一天之内,下发这1000w个请求给emqx呢?
假设使用mqtt client? 我在6台业务应用上面通过6个 mqtt连接,一天传输1000w请求稳定不?

谢谢,请大家赐教。

物联网平台的工作原理、产品优势和应用场景_物联网平台-阿里云帮助中心 (iot平台)
云端开发指南_物联网平台-阿里云帮助中心 (业务应用使用的sdk或api)

你这些 打印设备,如果要使用mqtt client,你是怎么样,让它们支持 mqtt协议呢?
难道这些打印设备可编程吗?
或者是它有个配置界面,可以选择mqtt或socket协议,你选择mqtt协议(不选择socket TCP/IP),然后再定义下emqx server的ip地址,就完成了配置?

设备端使用mqtt client (eclipse/paho.mqtt.c )连接emqx 或者云厂商的物联网平台。

后端应用系统(比如spring boot应用)则想办法使用mqtt client (java)把指令下发给emqx。(我纠结的就是这部分)

16 核的机器,开源版每秒大概可以支持 1000 次发布请求,企业版每秒大概可以支持 8000 次发布请求。

打印设备一般都是办公使用?你这个算每天 8 个小时的工作时间,也就是 28800 秒,1000w/28800 差不多是 347 次/秒。如果你部署三个节点的集群,那分摊到每个节点上的请求就更少了,所以基本上是没什么问题的。

这些设备都好牛啊!竟然 支持 编程 !

一般来说,比方说国内,在交给工厂生产的时候,已经定好了三元组信息(pk,dn,secret)。而且连接哪个地址的服务器也是写入固件里面的。当然,也可以留下一些系统配置。随时更改设备连接的地址。

但是这个一般,都默认是socket的。
你如果要支持mqtt,估计要对工厂做额外说明吧?

和工厂没有关系的。驱动固件是自己的研发人员开发的。工厂生产只是贴标签,把驱动固件的参数写到硬件里面而已

你这个固件一但烧好,以后要远程改,容易吗?就是固件升级方式容易吗?客户端的升级、改动的难和易,往往决定了服务端mqtt的接收处理能力的回旋余地。不能把所有事情都指望在服务端mqtt server。
物联网讲究边缘计算、就是客户端订制、改动、升级能力也要强,能远程调整参数大小、升级程序。