SpringBoot如何接收1000个MQTT客户端的消息,如果SpringBoot后台只有一个客户端连接,接收消息会变慢吗

SpringBoot如何接收1000个MQTT客户端的消息,如果SpringBoot后台只有一个客户端连接,接收消息会变慢吗

一个客户端消费不过来,就像一个人能干过1000个人的工作吗;可以采用规则引擎桥接webhook ,需要自己实现web server 或者并发不高的情况下采用共享订阅;或者采用企业版进行桥接kafka,或者持久化到数据库中。

只有企业版能桥接到kafka吗?因为还需要把消息推送到前端web页面,所以持久化到数据库中可能不太好

高并发的话,一个客户端消费不过来,会丢失消息。开源可以采用webhook 方式,你自己应用实现推送前端web页面。桥接第三方消息中间件或者持久化到库中,你应用从这些存储中根据实际情况进行消费

webhook方式是不是Tomcat承受不住啊,我们消息很多,一台机器1秒50个,1000台一秒就50000个,我怕web服务承受不住 :rofl:

tomcat webhook 估计也处理不了这么多的,网页显示也成问题。肯定架构中需要消峰。

把数据桥接到kafka,后端按需消费kafka,这样一个kafka客户端是否能处理多个mqtt客户端发布的消息呢?

咋们不是处理多少个mqtt 客户端发布的消息。是处理消息并发能力;目前已经测试过,目前桥接kafka 的能力并发可以有几十万的并发能力

这里我们有测过单节点(eqmx 和kafka 分别都是单节点)的并发能力的报告:EMQX 桥接 Kafka 性能测试报告 | EMQ 。集群方式能力更高

好的,我看看

假设你一个客户端每秒发布50个 1K大小的消息,一万个这样的客户端;这样消息处理并发能力有50W的并发能力桥接到Kafka。

我现在是服务端也建立了好多个客户端,订阅客户端与发布客户端一一对应 :joy:

看下共享订阅

你竟然到这里来问这种问题?你不知道这是erlang/mqtt社区?你为啥不用emqx呢?你竟然用java、还套上个框架去处理并发消息?

我也有这个问题,因为开源版不提供接入消息中间件,如果接入webhook在接口里再放入消息中间件,是不是有点绕了;而且接口是不是承受不了太高的并发量,还需要对接口做负载均衡处理?