AMQP客户端接收不到实时消息,为什么?

本文介绍通过物联网平台配置的AMQP服务端订阅消息无法接收的常见问题及解决方法。

配置AMQP服务端订阅后,为什么在线消费端收不到消息

问题描述

AMQP服务端订阅完成后,消费组对应在线AMQP客户端没有接收到消息。

可能原因

  • 当前设备通信的消息类型,不在AMQP服务端订阅的消息类型内。

  • 实时消息推送限流了,超过限流的消息不能实时消费,物联网平台会重试推送。

    AMQP客户端的一个连接限流1,000 TPS,消息转发TPS限流由实例下已购买规格决定。

  • 消息消费慢,导致消息不能实时消费,而进入堆积队列。

    • 消费客户端恢复稳定消费能力后,物联网平台会重试推送堆积消息。

    • 如果客户端对重试推送的消息消费失败,可能导致堆积队列阻塞。按大约一分钟间隔,物联网平台会向客户端再次重试推送。

解决方法

  1. 物联网平台控制台对应实例下,进入消息转发 > 服务端订阅页面,确认已创建的产品订阅中已添加推送消息类型

    具体操作,请参见配置AMQP服务端订阅

  2. 在服务端订阅页面,单击在消费组详情页面,查看实时消息消费速率。

    您可根据服务端订阅使用限制,通过增加AMQP客户端连接数扩容、增加AMQP客户端启动数扩容或升配实例下消息转发TPS规格,提高消息消费速率。

    • 物联网平台提供的AMQP SDK中可通过connectionCount配置连接数,最大为128。

    • 一个消费组可开启多个AMQP消费客户端,最大为64。

    • 实例升配方法,请参见实例升配

为什么设备上报消息推送不成功?

问题描述

AMQP服务端订阅的消息类型为设备上报消息,设备上报的物模型数据没有推送到AMQP客户端。

可能原因

  • 设备上报的物模型数据,在产品侧没有定义对应物模型功能。

  • 设备上报的数据格式,不符合Alink协议标准数据格式,无法推送消息到消费组的AMQP客户端。

  • 设备上报数据中的物模型功能标识符,与定义的功能标识符不一致。

解决方法

  1. 物联网平台控制台对应实例下,进入产品详情页面的功能定义页签,查看是否定义物模型功能。

  2. 如果没有定义物模型功能,按照业务需求添加物模型功能。具体操作,请参见添加物模型

  3. 如果已定义物模型功能,确保设备端上报物模型数据的功能标识符正确,且数据格式符合Alink协议标准数据格式,然后重新上报物模型数据。

    Alink协议格式说明,请参见设备属性、事件、服务

设备上报消息成功,业务侧消费端仍然没有收到消息,为什么?

问题描述

设备上报数据后,从物联网平台控制台对应实例下的监控运维 > 日志服务云端运行日志页签确认设备到云消息成功,但服务端订阅消息推送失败了。

可能原因

  • 订阅消费组没有开启的AMQP消费客户端接入物联网平台,或已接入的AMQP客户端已离线。

  • 创建产品时,定义校验类型免校验,设备上报数据没通过校验直接上报到物联网平台了。设备上报数据若不符合Alink协议标准数据格式,无法被推送到消费组的AMQP客户端。

解决方法

  1. 为AMQP服务端订阅产品关联的消费组,开启AMQP消费客户端连接物联网平台,并确保业务运行时,AMQP客户端保持在线。

    AMQP客户端离线可能原因,请参见AMQP客户端自动离线,为什么?。AMQP客户端接入方法,请参见AMQP客户端接入说明

  2. 确保设备端上报数据格式符合Alink协议标准数据格式,然后重新上报物模型数据。

    Alink协议格式说明,请参见设备属性、事件、服务

相关文档