环境信息
- EMQX 版本:4.4.1开源版
问题描述
emqx的消息队列只有一个吗?可否设置多个消息队列?为了防止一个客户端出现故障,不停的发送消息将队列阻塞的情况出现,想要在emqx broker指定每一个客户端的最大消息缓存/接收数量,或者将队列隔离,每个客户端使用一个长度较小的消息队列。上述的两种方式可以实现吗?
emqx的消息队列只有一个吗?可否设置多个消息队列?为了防止一个客户端出现故障,不停的发送消息将队列阻塞的情况出现,想要在emqx broker指定每一个客户端的最大消息缓存/接收数量,或者将队列隔离,每个客户端使用一个长度较小的消息队列。上述的两种方式可以实现吗?
消息队列都是基于订阅者的,即,每个订阅者一个消息队列,它就是多个的,该队列存储的是需要投递给客户端的消息。
是的是针对每个客户端的。
external
和 internal
是另外的一个概念。emqx 的默认配置中,开放了两类 MQTT 的监听端口,允许外部网络接入的listener.tcp.external = 0.0.0.0:1883
和 只允许内部/局域网络接入的: listener.tcp.internal = 127.0.0.1:11883
(当然这里只是一个默认配置,一般来说这里会配置为你机器的内网网卡的 IP,例如 192.168.1.2)。
这里的 external, 和 internal 则指的是 emqx 提供的这两组分别基于内外网的配置组,参考:https://www.emqx.io/docs/zh/v4.4/getting-started/config.html#zone-listener
所以这里的 external 和 internal 指的是在不同的配置组里面,有不一样的 max_inflight 的默认值 (因为,我们认为用于内网的 MQTT 连接,是比用于外网的 MQTT 连接 有跟高的吞吐要求)
仍然是每个订阅者都有自己的队列