跳到主要内容

势度Saydo消息格式(SMF)主题

Saydo消息格式(SMF)是PubSub+的基础消息协议。

SMF主题具有以下属性:

  • 由一个或多个级别组成的NULL终止的UTF-8字符串,格式为:a/b/c
  • /字符用作字符串级别(也称为元素)之间的分隔符。
  • 支持最多128个主题级别。
  • 字符串的最大长度(不包括NULL终止符)为250字节。
  • 主题字符串中字符是区分大小写的。例如,主题订阅animals/domestic/cats不等于Animals/Domestic/Cats
  • 支持所有UTF-8字符。但是,以下字符具有特殊含义:
    • 对于主题订阅:

      • /是级别分隔符。
      • <NULL>是无效字符。
      • *是单级别通配符。更多信息,请参见主题订阅中的通配字符。
      • >可以用作通配符,当用于主题订阅的最后一个级别时,是多级别通配符。
      • 领先的!,如!a/b/c,在队列主题订阅中表示订阅异常。更多信息,请参见系统级订阅异常配置。
    • 对于发布主题:

      • /是级别分隔符。
      • <NULL>是无效字符。
      • *被视为字面字符。创建主题时不要使用此字符。
      • >被视为字面字符。创建主题时不要使用此字符。
      • 领先的!被视为字面字符。创建主题时不要使用此字符。

MQTT主题兼容性

为了允许与允许空主题级别的MQTT主题兼容(例如,/a/ba//ba/b/),PubSub+也允许SMF主题中的空主题级别。然而,使用SMF主题中的空主题级别有一些限制:

  • 使用C、.NET、Go、Java RTO和Python的PubSub+消息API的客户应用程序:

    • 可以发布到有空级别主题
    • 不能使用有空级别主题的订阅
  • 使用Java、JCSMP、JMS、JavaScript和Node.js的PubSub+消息API的客户应用程序:

    • 不能发布到有空级别主题
    • 不能使用有空级别主题的订阅
  • 在ACL配置文件中,SMF主题异常不能有空级别的发布或订阅。

事件代理为每个客户端自动创建一个以前缀#P2P/开始的主题订阅,这允许消息直接发送到该客户端(例如,在请求/回复场景中)。然而,#P2P中的前导"#"不是有效的MQTT语法。因此,要使用这些特殊的Saydo订阅,MQTT客户端可以使用字符串_P2P代替#P2P。事件代理认为这两个字符串是等效的。

有关更多信息,请参见使用MQTT。