跳到主要内容

添加数据负载

您可以向消息中添加以下类型的负载:

  • XML 内容 — XML 数据可以添加到消息的 XML 内容部分。
  • 二进制内容 — 二进制数据可以作为二进制附件添加到消息中。消息只能包含一个附件。当此附件通过事件代理发送时,它不会被处理、转换,也不会参与订阅匹配或过滤操作。这为发送不需要在到达接收应用程序之前由平台处理的数据提供了一种高效方式。
  • 结构化数据 — 结构化数据也可以作为二进制附件中的负载添加(请参阅使用结构化数据)。
  • 用户属性映射 — 结构化数据可以添加到用户定义的消息头字段中。
  • 用户数据 — 最多可以向用户数据消息头字段中添加 36 字节的应用程序特定二进制数据。

发布的直接消息允许的最大总大小为 64 MiB(67,108,864 字节)。这是事件代理施加的限制,它考虑了消息头字段数据、XML 元数据、XML 负载以及任何附件。

PubSub+ 消息 API要添加的数据类型设置方式
Java RTOXML 数据不适用
二进制数据MessageHandle.setBinaryAttachment(...)
用户数据MessageHandle.setUserData(...)
CXML 数据- solClient_msg_setXml(...)
将给定指针和大小的内容复制到 XML 消息部分。这会使用堆存储分配的内存。
  • solClient_msg_setXmlPtr(...)
    将 XML 消息部分的内容设置为给定指针和大小。这会引用应用程序中已存在的数据;不涉及内存复制。 | | 二进制数据 | - solClient_msg_setBinaryAttachment(...)
    将给定指针和大小的内容复制到二进制附件消息部分。这会使用堆存储分配的内存。
  • solClient_msg_setBinaryAttachmentPtr(...)
    将二进制附件消息部分的内容设置为给定指针和大小。这会引用应用程序中已存在的数据;不涉及内存复制。
    您还可以在二进制附件中添加结构化数据。有关更多信息,请参阅使用结构化数据。 | | 用户数据 | - solClient_msg_setUserData(...)
    将给定指针和大小的内容复制到用户数据消息部分。这会使用堆存储分配的内存。
  • solClient_msg_setUserDataPtr(...)
    将用户数据消息部分的内容设置为给定指针和大小。这会引用应用程序中已存在的数据;不涉及内存复制。 | | .NET | XML 数据 | IMessage.XmlContent | | 二进制数据 | IMessage.BinaryAttachment | | 用户数据 | IMessage.UserData | | JavaScript 和 Node.js | XML 数据 | solace.Message.setXmlContent(...) | | 二进制数据 | - solace.Message.setBinaryAttachment(...)
  • solace.Message.setSdtContainer(...)
    用于在二进制中传输 SDT 容器负载。 | | 用户数据 | solace.Message.setUserData(...) |

如何为消息添加数据负载

相关示例

  • 有关如何为消息添加二进制数据负载的示例,请参考 Java RTO、C 和 .NET API 的 DirectPubSub 示例,以及 JavaScript 和 Node.js API 的 TopicPublisher 示例。

  • 有关如何为消息添加 SDT 负载的示例,请参考 Java RTO、C 和 .NET API 的 SDTPubSubMsgIndepSDTPubSubMsgDep 示例,以及 JavaScript 和 Node.js API 的 BasicRequestorBasicReplier 示例。

    • SDTPubSubMsgIndep 示例中,SDT 容器是使用应用程序内存创建的(C 和 .NET API 允许)。
    • SDTPubSubMsgDep 示例中,SDT 容器是使用 API 控制的内存创建的(仅 C 和 .NET API 允许)。

有关使用应用程序内存或 API 控制的内存创建 SDT 容器的更多信息,请参阅使用结构化数据。