# 常规开发问题

# 支持哪些协议连接?

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

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

# 如何绑定域名?

在 EMQX Cloud 建立部署后,您会获得一个 MQTT 连接地址,该地址在专业版部署里以 IP 显示,在基础版中以 emqx.cloud 结尾的二级域名显示。

您或许已经拥有自己的域名,希望可以将部署地址绑定到自己拥有的域名,通过您的域名使用 MQTT 服务。

注意:在绑定域名后,基础版将无法使用 mqtts 和 wss 端口

# 操作步骤

  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 服务。

# 如何设置 NAT 网关配置?

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

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

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

# 是否支持 API 调用?

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

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

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

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

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

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

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

目前还不支持通过直接获取自己的MySQL的数据,可以通过将数据导出,EMQX Cloud支持csv文件的数据导入,可以批量导入认证信息。或者通过工单或发送邮件(cloud-support@emqx.io)与我们取得联系。

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

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

# 控制台的设备事件可以保存多久?

设备事件数据可以永久保存。

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

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

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

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

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

# 是否可以使用离线消息?

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

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

# 离线消息暂存多长时间?

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

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

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