# 常规开发问题
# 支持哪些协议连接?
EMQX Cloud 部署目前支持 MQTT over TLS/SSL, WebSockets over TLS/SSL 协议连接。
如需其他协议支持,您可以提工单或发送邮件(cloud-support@emqx.io)与我们取得联系。
# 如何绑定域名?
在 EMQX Cloud 建立部署后,您会获得一个 MQTT 连接地址,该地址在专业版部署里以 IP 显示,在基础版中以 emqx.cloud 结尾的二级域名显示。
您或许已经拥有自己的域名,希望可以将部署地址绑定到自己拥有的域名,通过您的域名使用 MQTT 服务。
注意:在绑定域名后,基础版将无法使用 mqtts 和 wss 端口
# 操作步骤
这里假设您有顶级域名 abc.com, 希望以 mqtt.abc.com 访问 mqtt 服务,您在 EMQX Cloud 上的部署的连接地址为 123.123.123.123
那么只需要在您的域名提供商的操作面板上,将 mqtt.abc.com 的 A 记录指向 123.123.123.123 即可
注意:如果您使用的是基础版或者亚马逊中国,则需要将 mqtt.abc.com 的 CNAME 记录指向 123.123.123.123
- 等待 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这样的数据库中。设备上线消费了消息之后,对应的离线消息也会被删除。
# 如何计算连接数?
连接数的定义为:在线的客户端和保留会话的离线客户端数量之和。在线客户端是指 CONNECT
之后连接到服务器的客户端,包括 keepAlive
时间范围内没有断开的客户端。 保留会话的离线客户是指客户端虽然离线了,但是设置了 CleanSession
为 false,这样的客户端也会被计算在连接数之内。当设备 DISCONNECT
下线,或者超过了 keep alive 的时间,没有通信,设备都会下线,不会计算在连接数当中。