mqtt服务器不算是消息队列吗?如果并发量很高该如何解决?

2023-04-02 0 3,174

在电脑上搭建mqtt服务器,起了emq,然后启动生产者手动向emq发了几条消息,没起消费者,过了一会再启动消费者订阅对应主题,但是消费者没有接收到数据,这种情况是因为消息没有持久化在队列中吗?不启动消费者这些消息有办法在队列中持久化吗?
我一直以为生产者发消息是发到队列中持久化的,后面消费者慢慢消费,但mqtt服务器实际好像不是这样的。如果生产者并发量较大该如何解决,不太明白,请大佬赐教

回答:

MQTT是一个消息协议。比如RabbitMQ是一个消息队列中间件,它支持AMQP、MQTT等多种协议。

没了解emq是个啥?应该类似RabbitMQ。持久化消息应该是很基础的功能。

可以关注一下MQTT里面的消息服务质量(QoS)。在消息发送时,可以设置

借用一下网图:

mqtt服务器不算是消息队列吗?如果并发量很高该如何解决?

在设置为: 严格一次模式时,可看到Broker中间件是有Store(Msg)操作的。默认好像是不会持久化消息。

mqtt应该不算消息队列。默认情况下没有消息持久化。虽然它也有主题和订阅的概念在里面,但是mqtt服务端(代理)主要还是基于这两个概念来进行转发消息。

mqtt协议里面是有保留消息的(Retain 标志为 1 的 PUBLISH 报文),emqx也支持保留消息,但是每个主题只有一条(官网文档是这么描述的)

这个“保留消息”应该不是你要的在队列中持久化消息。

mqtt是这样的,如果你往一个主题生产消息时,如果没有其他的客户端订阅这个主题,mqtt服务器(代理)就会丢掉这个消息。之后客户端再订阅消息,也只能收到从订阅开始之后的消息了,不会收到历史消息。

这个是不是丢掉消息,和QOS没有关系,不管发布消息的时候QOS是多少,只要发布的那一刻,主题没有被客户端订阅,消息都会被丢掉。

===

mqtt的并发量问题,应该就是大量的客户端连接,可能会有几十上百万的客户端同时连接,客户端会发布和订阅消息,这个只要加资源就可以解决。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 mqtt服务器不算是消息队列吗?如果并发量很高该如何解决? https://www.jkxiazai.com/1245.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务