跳转至

数据转发

数据转发器把设备数据发送到外部系统(如 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 条的记录会被自动清除。