emqx消息订阅被阻塞

pub和sub的qos=0,对同一个topic pub多条消息,sub是排队一条一条被消费的,这个有相关配置可以设置成批量消费或者异步消费吗

如果是 QoS = 0 的话,Broker 给客户端发发送消息不需要等待 PUBACK,所以可以认为消息总是异步发送给客户端的。你说客户端一条一条消费消息,可能是看到客户端从 TCP 协议栈里一条条读取消息然后处理,是正常的过程。

现在我遇到的问题是:比如已经对同一个topic发送了10条消息,这个topic客户端需要1秒的处理时间,那么这10个消息需要10秒才能消费完

客户端如果是一条一条处理消息的话,的确需要 10s 才能消费完成。客户端应该没有什么并行的办法,只能提高每一条的处理速度。

这个能从emqx服务端解决这个问题吗,可否加一个配置:是否异步确认消息已经被消费,不用同步等待最终执行结果

我看官网文档,可能是为了保证消息顺序设计的,但是假如只考虑订阅的顺序性,不考虑消费执行成功的顺序性,这种可行吗。也就是消息被订阅到就算到达了,保证到达的顺序性。

我觉着现在不是 emqx 这边的问题,因为是 QoS=0,emqx 已经把消息全部发送出去了,是客户端处理有点慢。

所以你说你观察到了订阅被阻塞具体是什么现象?是 TCP window 变为 0 了、emqx 里对应的连接进程 mailbox 开始累积,还是从客户端一侧观察到消息非常慢地被消费?

这种因为消费慢导致的 TCP 阻塞问题可以通过几种办法解决: 1. 加快订阅者的处理速度。2. 增加客户端并使用共享订阅来均衡订阅者的负载 3. 更改方案,订阅者不再使用 MQTT 订阅,而是使用 webhook 接收消息。

了解,这种场景应该是我用的那个mqtt包实现机制问题,感谢