开发者社区 > 云原生 > 云消息队列 > 正文

MQTT官网最佳实践没有讲心跳逻辑和建议哦. 一般设置的是多少呀?

MQTT官网最佳实践 没看到setKeepAliveInterval相关的内容. 你们一般设置的是多少呀?

展开
收起
真的很搞笑 2023-12-10 15:40:27 305 0
3 条回答
写回答
取消 提交回答
  • MQTT协议本身是支持心跳保活机制的,这个特性是通过setKeepAliveInterval()方法来设置的。在MQTT官网上并没有明确说明心跳间隔的建议值,但一般来说,这个值需要根据你的具体应用场景和网络环境来决定。

    对于大多数应用来说,一个合理的心跳间隔时间可能在10秒到60秒之间。如果网络条件良好且对实时性要求较高,可以将心跳间隔设置得较短;反之,如果网络条件较差或对实时性要求不高,可以适当延长心跳间隔。

    需要注意的是,过短的心跳间隔可能会增加网络的负担,而过长的心跳间隔可能会导致客户端和服务器之间的连接在某些情况下过早地断开。因此,你需要根据实际情况权衡并选择合适的值。

    2023-12-13 09:01:19
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    MQTT协议中,心跳机制和Keep Alive是两个关键的机制。Keep Alive指定了连接的最大空闲时间T。当客户端检测到连接空闲时间超过T时,必须向Broker发送心跳报文PINGREQ。一旦Broker收到这个心跳请求,它会返回一个心跳响应PINGRESP。

    为了避免因没有数据传输而导致的连接被服务端主动断开,通常的建议是将keepalive的时间设置为小于服务器端的超时时间。具体来说,MQTT服务器端通常会配置一个默认的超时时间,例如60秒。如果在这个时间段内,连接没有数据传输,服务器会主动断开连接以释放资源。

    2023-12-11 13:55:25
    赞同 展开评论 打赏
  • 云消息队列 MQTT 版会定时检查客户端心跳,当系统检测到客户端超过指定时长(1.5*keepalive时长)没有心跳,则会断开连接。

    例如,默认心跳超时时间为90 s,则系统最快在第135 s时断开连接,由于心跳检测也不是实时检测,因此系统发现心跳超时断开连接时会有一定滞后,实际会比135 s长一些。https://help.aliyun.com/document_detail/449237.html?spm=a2c4g.2392245.0.i4

    2023-12-10 17:43:36
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载