You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NATS MQTT中,如何发布保留消息(Retained Message)?

用NATS原生客户端发送MQTT保留消息的方法

如果你用NATS客户端连接作为MQTT服务器的NATS,要发送“固定”的保留消息,核心是在发布消息时添加特定的NATS消息头,标记这是一条MQTT保留消息:

  • 发布消息时,给消息添加$MQTT_RETAIN头部,值设为true
  • 发布的主题要和目标MQTT客户端订阅的主题完全匹配

给个Go语言NATS客户端的示例代码:

nc, err := nats.Connect(nats.DefaultURL)
if err != nil {
    log.Fatal(err)
}
defer nc.Close()

// 构造带保留标记的消息
msg := &nats.Msg{
    Subject: "sensor/temperature",
    Data:    []byte("25.6"),
    Header:  nats.Header{"$MQTT_RETAIN": []string{"true"}},
}

// 发布这条保留消息
if err := nc.PublishMsg(msg); err != nil {
    log.Fatal(err)
}

额外注意点:

  • 要是想清除某个主题的保留消息,只需要发布一条空内容、且带有$MQTT_RETAIN: true头部的消息到该主题即可,NATS会自动移除对应的保留消息
  • 确认你的NATS服务器已经开启MQTT兼容模式(一般默认启用,也可以通过配置mqtt.enabled=true手动开启)

内容的提问来源于stack exchange,提问作者kolypto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:52:03