Skip to content

常规开发问题

支持哪些协议连接?

EMQX Cloud 部署目前支持 MQTT over TLS/SSL, WebSockets over TLS/SSL 协议连接。

如需其他协议支持,您可以提工单或发送邮件(cloud-support@emqx.io)与我们取得联系。

如何绑定域名?

在 EMQX Cloud 建立专业版部署后,您会获得一个 MQTT 连接地址,该地址在专业版部署里以 IP 显示。您或许已经拥有自己的域名,希望可以将部署地址绑定到自己拥有的域名,通过您的域名使用 MQTT 服务。

操作步骤

  1. 这里假设您有顶级域名 abc.com, 希望以 mqtt.abc.com 访问 mqtt 服务,您在 EMQX Cloud 上的部署的连接地址为 123.123.123.123

  2. 那么只需要在您的域名提供商的操作面板上,将 mqtt.abc.com 的 A 记录指向 123.123.123.123 即可

注意:如果您使用的是基础版或者亚马逊中国,则需要将 mqtt.abc.com 的 CNAME 记录指向 123.123.123.123

  1. 等待 DNS 解析生效后,您便可通过 mqtt.abc.com 连接 mqtt 服务。

TIP

Serverless 版和 专有版 - 基础版,不支持使用 CNAME 绑定自定义域名。建议使用 EMQX Cloud 提供的默认域名连接地址,以确保正确分配和管理连接。

如何设置 NAT 网关配置?

仅支持专业版,可以在增值服务中开通 NAT 网关。

建了 VPC 对等连接,自己的服务如何通过内网去连接 MQTT 服务?

专业版部署在开通增值服务 - 内网负载均衡后可以通过内网连接地址连接到 EMQX Cloud 部署。

是否支持 API 调用?

支持。我们提供了 HTTP API 以实现与外部系统的集成,例如查询客户端信息、发布消息和创建规则等。

更多关于 API 的使用方法,可以前往指南 —— REST API

支持什么样的 TLS/SSL 认证?

目前支持 单向,双向,和 自定义签名的方式来进行配置。

如何与自己现有的系统对接?

可以使用数据集成与您现有功能做对接,详情查看 数据集成

设备的认证信息存储在自己的数据库中,是否支持通过我自己的数据库做MQTT连接的认证?

EMQX Cloud 专有版支持从用户自己的数据库中获取到认证信息,请查看文档外部认证和访问控制

控制台的设备日志可以保存多久?

EMQX Cloud 不会保存设备通讯日志,只会保存部署日志,部署日志默认保存7天。

设备事件可以保存多久?

设备事件数据可以永久存储以转发到第三方服务。

如何订阅设备上线下线消息?

通过数据集成中的事件订阅。设备上线、设备下线的事件可以通过数据集成中的事件订阅来获取。如果标准版的用户,可以将事件数据通过Webhook转发到自己Web服务,如果是专业版用户,可以将上线下线事件消息转发到消息队列或者数据库中。

除了设备的上下线事件,还可以订阅消息投递、确认、丢弃,以及设备订阅、取消订阅的事件。

单条消息的大小有什么限制?是否可以增加上限?

目前单条消息最大为 1MB,如果您需要增加上限,可以通过工单联系技术支持由我们协助修改配置。需要注意的是修改之后,会对部署所支持的最大 TPS 有所影响,以及部署相对应的 SLA的等级也会收到影响。具体会在工单中进行告知。

是否可以使用离线消息?

一般情况下 MQTT 客户端仅在连接到消息服务器的时候,如果客户端离线将收不到消息。但是在客户端有固定的 ClientID,clean_session 为 false,且 QoS 设置满足服务器端的配置要求时,在客户端离线时,服务器可以为客户端保持一定量的离线消息,并在客户端再次连接时发送给客户端。

离线消息在网络连接不是很稳定时,或者对 QoS 有一定要求时非常有用。

离线消息暂存多长时间?

对于MQTT v3 的协议默认配置为2小时,对于MQTT v5 的协议,根据客户端中 session_expiry_interval的值设定。过期之后队列中的消息会丢失。

如何进行离线消息的存储?

鉴于消息暂存的不稳定性,我们推荐将离线消息进行存储。我们推荐将离线消息进行落盘存储。这里我们需要使用到专业版的数据集成服务,可以将离线消息保存到像Redis这样的数据库中。设备上线消费了消息之后,对应的离线消息也会被删除。

如何计算连接数?

连接数的定义为:在线的客户端和保留会话的离线客户端数量之和。在线客户端是指 CONNECT 之后连接到服务器的客户端,包括 keepAlive 时间范围内没有断开的客户端。 保留会话的离线客户是指客户端虽然离线了,但是设置了 CleanSession 为 false,这样的客户端也会被计算在连接数之内。当设备 DISCONNECT 下线,或者超过了 keep alive 的时间,没有通信,设备都会下线,不会计算在连接数当中。

TPS 是如何计算的?

TPS - Transaction Per Second, 用来计量部署每秒钟处理的消息的数量。以下的 MQTT 消息和 HTTP 消息会计入 TPS 中。

消息类型消息流向描述
MQTT PUBLISH从设备或服务发送从设备或应用服务发送消息到部署,部署接收到消息
MQTT PUBLISH从部署发送从部署发送消息到订阅端(设备或应用服务),订阅端接收到消息
MQTT RETAINED从设备或服务发送或从部署发送保留消息的发布和接收
HTTP PUBLISH从服务发送通过 POST /mqtt/publish 以及 POST /mqtt/publish_batch API 发送的消息

以下的 MQTT 消息不会计入 TPS 中

消息类型描述
MQTT CONNECT连接服务端
MQTT CONNACK确认连接请求
MQTT PUBACK发布确认
MQTT PUBREC发布收到(QoS2,第一步)
MQTT PUBREL发布释放(QoS2,第二步)
MQTT PUBCOMP发布完成(QoS2,第三步)
MQTT SUBSCRIBE订阅主题
MQTT SUBACK订阅确认
MQTT UNSUBSCRIBE取消订阅
MQTT UNSUBACK取消订阅确认
MQTT PINGREQ心跳请求
MQTT PINGRESP心跳响应
MQTT DISCONNECT断开连接