跳到主要内容

创建主题

在使用 JCSMP、Java RTO 以及 JavaScript、Node.js 或 .NET API(这些是面向对象的)时,客户端必须创建一个主题实例,以封装一个可以用作发布消息目标的主题名称。主题实例也可以被消费者用于通过订阅来指定他们感兴趣接收的消息。

在使用 C API(非面向对象)时,主题只是一个字符串(char*)。

在使用 JavaScript 和 Node.js API 时,会创建一个通用的目标实例,而不是主题实例。

客户端可以创建以下类型的主题:

  • 在工厂级别创建非临时主题。
  • 在会话级别创建临时主题。临时主题的作用域和生命周期与其创建的会话相同。

有关支持的主题语法规则,请参阅主题支持与语法。

在使用 C API 时,主题只需设置为目标消息属性(请参阅目标)。

创建主题

要创建一个非临时主题,请在已连接的会话上调用以下列出的方法之一,并传入主题名称。

PubSub+ 消息 API使用方法
JCSMP- JCSMPFactory.createTopic(...)
  • DestinationUtils.topicFromNetworkName(...) | | Java RTO | - Solclient.Allocator.NewTopic(...) | | C | - 无函数,主题是一个 char*(字符串)。 | | .NET | - ContextFactory.createTopic(...)
  • Helper.Destination.TopicFromEncodedName(...) | | JavaScript 和 Node.js | - solace.SolClientFactory.createTopicDestination(...) |

如何创建主题

创建临时主题

要创建一个临时主题,请在已连接的会话上调用以下列出的方法之一。临时主题的物理名称由 API 自动生成。

临时主题只能在已连接的会话中创建。

在使用 JCSMP 时,当对会话执行第一个操作时,会自动建立连接。因此,建议在尝试创建临时主题之前执行另一个操作(例如,添加订阅),因为这会建立必要的连接。

PubSub+ 消息 API使用方法
JCSMP(旧版 Solace Java API)JCSMPSession.createTemporaryTopic()
Java RTOSessionHandle.createTemporaryTopic()
CsolClient_session_createTemporaryTopicName()
.NETISession.createTemporaryTopic()
JavaScript 和 Node.js不适用

如何创建临时主题

相关示例

有关如何创建主题和临时主题的示例,请参考 JCSMP、Java RTO 和 .NET API 的 SimpleFlowToTopic 示例。