数据转发¶
数据转发器把设备数据发送到外部系统(如 Webhook 或消息中间件),但外部系统不在遥测链路上。转发完全异步:规则链的 forward(转发) 节点先把消息发布到有界队列,再由后台 worker 完成投递。接收端故障绝不会阻塞数据接入或规则处理。
转发器页签¶
每一行是一个转发器。
- 名称(Name) —— 租户内唯一的显示名称。
- 类型(Sink) —— 投递机制:HTTP Webhook、MQTT Broker、NATS 服务、RabbitMQ(AMQP)、Apache Kafka、邮件(SMTP)或短信(HTTP 服务商)。
- 目标(Target) —— 接收目标,例如 HTTP 方法与接收地址。
- 最大次数(Max attempts) —— 超过此次数后消息转入死信。
- 启用(Enabled) —— 开启或关闭投递。
在抽屉中创建或编辑转发器。所有转发器共用以下设置,其余字段取决于所选接收端类型。
通用设置¶
- 接收端类型(Sink type) —— 只能在创建转发器时选择,创建后不可更改;存储的配置只适用于特定接收端类型,如需更换投递方式请新建转发器。
- 最大次数(Max attempts) —— 超过此次数后消息转入死信。
- 消息有效期(Message lifetime) —— 未投递消息的保留时长。即使接收端仍不可用,超过有效期的消息也会丢弃,避免恢复后被整段故障期的数据淹没。默认 1 小时。
- 最大缓存条数(Max buffered messages) —— 队列中消息的上限,满时丢弃最旧的消息。默认 1000。
接收端配置¶
HTTP Webhook(http)¶
- 接收地址(必填)—— 接收端 URL(
http://或https://)。 - HTTP 方法 ——
GET、POST、PUT、PATCH或DELETE;请求体为 JSON 信封。 - 用户名 / 密码 —— 可选的 HTTP Basic 认证。
- 请求头(JSON) —— 每次请求附带的可选 HTTP 头,以 JSON 对象给出。
- 私有 CA 证书 / 客户端证书 / 客户端私钥(PEM) —— 信任内部 CA 和/或提供双向 TLS 客户端证书;系统根证书仍有效。
- 跳过证书校验 —— 不安全的开关,建议改用私有 CA 证书。
- HTTP
2xx/3xx视为成功;408、429、5xx会重试,其他4xx为永久失败。
MQTT Broker(mqtt)¶
- Broker 地址(必填)—— 明文用
tcp://host:1883,TLS 用ssl://host:8883。 - 主题(必填)—— 每个信封发布到的主题。
- QoS —— 0、1 或 2。
- 客户端 ID —— 可选,留空时自动生成。
- 用户名 / 密码 —— 可选的 Broker 凭据。
NATS 服务(nats)¶
- 服务器(必填)—— 外部 NATS 服务地址,如
nats://host:4222。 - 主题(Subject)(必填)—— 每个信封发布到的 Subject。
- 用户名 / 密码 —— 可选的用户凭据。
- Token —— 可选的认证令牌(替代用户名/密码使用)。
RabbitMQ / AMQP(amqp)¶
- URL(必填)—— 含 vhost 的连接地址,如
amqp://user:pass@host:5672/vhost。 - 交换机(Exchange) —— 可选的命名交换机,留空则发布到默认交换机。
- 路由键(Routing key)(必填)—— 每个信封携带的路由键。
Apache Kafka(kafka)¶
- Bootstrap 服务器(必填)—— 逗号分隔的
host:port列表。 - 主题(必填)—— 生产消息的目标主题。
- 使用 SASL 认证 —— 开启后填写 SASL/PLAIN 凭据(
SASL_PLAINTEXT,不带 TLS);匿名 Broker 请关闭。 - 用户名 / 密码 —— SASL/PLAIN 凭据,仅在 SASL 开关开启时显示,用户名必填。
邮件 SMTP(email)¶
- 主机(必填)—— SMTP 服务器地址。
- 加密方式 ——
STARTTLS(默认)EHLO 后升级加密并自动填端口 587;TLS/SSL为隐式 TLS、自动填 465;不加密为明文、自动填 25。切换时自动填端口,仍可手工覆盖。 - 端口 —— 服务器端口,随加密方式自动填入(587/465/25)。
- 发件人(必填)—— 发件地址。
- 收件人(必填)—— 逗号分隔的收件地址。
- 主题 —— 可选的邮件主题;正文为 JSON 信封。
- EHLO 域名 —— EHLO/HELO 宣告的完整域名,留空默认使用发件人域名(严格服务器会拒绝客户端默认的
localhost)。 - 使用 SMTP 认证 —— 开启后发送用户名/密码,且用户名必填;587 端口下凭据受 STARTTLS 加密保护。
短信 HTTP 服务商(sms)¶
- 接收地址(必填)—— 服务商的 HTTP 发送地址。
- 收件人(必填)—— 逗号分隔的手机号。
- 收件号码 JSON 字段 / 短信正文 JSON 字段 —— 携带手机号(默认
to)与短信内容(默认text)的服务商字段名;worker 以表单/JSON 参数 POST 提交。 - 请求头(JSON) —— 每次请求附带的可选 HTTP 头(如 API Key)。
- 成功与否按服务商的 HTTP 状态判定,重试规则与 HTTP Webhook 相同。
如何触发转发¶
转发器是租户级资源,只有被规则链引用时才会生效。在规则链中添加 forward 节点,并把它的 forwarder_id 指向该转发器。到达该节点的消息会进入投递队列。发布失败只会记录日志,不会使规则链失败。
重试与失败¶
- 网络错误、超时、
408、429以及5xx响应会按退避策略重试。 - 其他
4xx响应属于永久性拒绝。 - Broker 类接收端(MQTT、NATS、AMQP、Kafka)把连接或发布错误(包括认证被拒)归为可重试;SMTP 与 HTTP 短信服务商采用相同重试策略,统一受最大次数约束。
- 超过最大尝试次数,或遇到永久性拒绝时,消息停放到 死信 页签。
死信页签¶
查看停放的消息,包括来源转发器、设备、尝试次数与最后错误。点击 重放(Replay) 可把该消息重新发布到对应转发器的队列。只有当转发器仍然存在时才能重放。
投递日志页签¶
每一行是一次真实投递,显示时间、转发器、设备、第几次尝试以及接收端返回码:
- 已投递(Delivered) —— 接收端已接受消息(如 HTTP
200)。 - 重试中(Retrying) —— 临时性故障,消息将被重试。
- 失败(Failed) —— 永久性拒绝,消息转入死信。
由于投递发生在 forward 节点返回之后,该返回码不会出现在规则链 trace 中,请在此页签查看。日志有界:超过 7 天、或每个转发器超过 1000 条的记录会被自动清除。