跳到主要内容

在PubSub+ JCSMP API中创建客户端会话

会话创建了一个单一的客户端连接到 PubSub+ 事件代理,用于发送和接收消息。Solace 消息格式(SMF)用于促进客户端和事件代理之间的通信,这种 SMF 通信随后通过单一的 TCP 连接封装。

当使用 Solace C API 的进程间通信(IPC)功能时,会话也可以使用共享内存传输;有关更多信息,请参阅配置进程间通信。然而,当使用适用于 iOS 应用程序的 C API 时,共享内存传输和 IPC 功能不可用。

默认情况下,会话是不安全的——在已连接的会话中,客户端和事件代理之间传输的 SMF 数据以纯文本形式传输。然而,也可以建立使用传输层安全性(TLS)/安全套接字层(SSL)协议的安全会话,以便对 SMF 数据进行加密。有关如何配置特定 TLS/SSL 会话属性以及建立安全会话的信息,请参阅 PubSub+ JCSMP API 中的安全会话创建。

会话总是在上下文中创建的。客户端应用程序控制一个或多个会话是否分组到一个处理上下文中。一旦在给定上下文中创建了会话,它就与该单一上下文关联,直到它被释放。

要创建会话,客户端应用程序必须提供以下内容:

  • 会话属性:用于自定义会话的属性。未明确提供的任何会话属性都设置为默认值。尽管在许多情况下可以使用默认值,但某些客户端和事件代理参数需要客户端提供特定输入,以建立与事件代理上的消息 VPN 的连接。有关详细信息,请参阅 PubSub+ JCSMP API 中用于建立连接的会话属性。

  • 特定上下文实例:对于 JCSMP,如果您想使用默认上下文之外的上下文,则可以将特定上下文传递给工厂方法。

  • 会话事件回调或委托:对于 Java RTO、C 或 .NET API,创建会话时必须指定会话事件回调或委托。此回调或委托将针对每个会话事件被调用。有关详细信息,请参阅 PubSub+ JCSMP API 中的会话事件处理。

对于 JCSMP,会话事件回调是可选的。

  • 消息接收回调或委托:对于 Java RTO、C 或 .NET API,创建会话时必须指定消息事件回调或委托。每次通过会话接收直接消息时,都会调用此回调或委托。有关详细信息,请参阅 PubSub+ JCSMP API 中的直接消息接收。

对于 JCSMP,直接消息传递到会话是通过 com.solacesystems.jcsmp.Consumer 接收的,客户端应用程序在创建会话后获取该对象。

创建会话后,必须将其连接。对于 JCSMP,建议作为最佳实践显式调用连接;尽管当请求生产者或消费者时,API 将自动尝试连接。

  • 要创建会话,请使用 JCSMPFactory.createSession(...)
  • 要注册消息回调,请使用 JCSMPSession.getMessageConsumer(...)
  • 要连接会话,请使用 Session.connect()
  • 要关闭会话,请使用 Session.closeSession()

有关如何创建和连接会话的示例,请参阅 Solace 开发者中心中的 DirectPubSub 示例。