跳到主要内容

在PubSub+ JCSMP API中创建结构化数据映射和流

创建映射和流所需的内存可以由客户端应用程序分配,以创建与消息无关的映射和流(参阅与消息无关的映射和流)。

与消息无关的映射和流适用于所有 PubSub+ 消息传递 API。

与消息无关的映射和流

通常情况下,会在应用程序内存中创建一个与特定消息无关的映射或流。这允许将容器添加到其他容器中,或者添加到不仅仅是一条消息的二进制消息部分。如果希望将容器重复添加到不同的消息或作为通用容器添加到现有容器中,使用与消息无关的容器会很有用。

对于 PubSub+ JCSMP API,创建容器时,会从堆中为其分配内存。

以下各节讨论如何使用与消息无关的容器:

  • 创建结构化数据映射
  • 创建结构化数据流
  • 通过引用将容器的内容添加到消息中
  • 将容器添加到现有容器中

创建结构化数据映射

要创建结构化数据映射,请使用以下方法:

  • XMLMessageProducer.createMap()
  • JCSMPFactory.createMap()

创建结构化数据流

要创建结构化数据流,请使用以下方法:

  • XMLMessageProducer.createStream()
  • JCSMPFactory.createStream()

通过引用将容器的内容添加到消息中

要通过容器引用将映射或流中的数据添加到消息的二进制附件中,请调用下表中列出的方法或函数,并传入要接收内容的消息的引用以及要添加的内容所在的容器。

如果消息已经具有二进制附件,则会移除该附件,仅传输引用的映射。

要通过引用添加容器的内容,请使用以下方法:

  • MapMessage.setMap(SDTMap map)
  • StreamMessage.setStream(SDTStream stream)

将容器添加到现有容器中

要将现有容器添加到映射或流中,请调用下表中列出的函数或方法之一,并传入父容器以及要添加到其中的子容器。

要将容器添加到现有容器中,请使用以下方法:

  • SDTMap.putMap(String key, SDTMap value) — 将指定的键与映射中的值相关联。
  • SDTMap.putStream(String key, SDTStream value) — 将指定的键与映射中的值相关联。
  • SDTStream.writeMap(SDTMap value) — 将映射写入流中。
  • SDTStream.writeStream(SDTStream value) — 将流写入流中。