跳到主要内容

消息组件

Solace PubSub+ 使用 Solace 消息格式(SMF)协议进行客户端与事件代理之间的通信。SMF 使用一种专有的二进制消息格式,为在平台上高效封装消息传输提供了一种有效方法。

使用 Solace 消息 API(包括 Solace JMS API)的客户端之间交换的消息格式在所有 Solace 消息 API 之间是兼容的。也就是说,一个客户端使用一种 Solace API 生成的消息可以被使用另一种 Solace API 的任何其他消费客户端理解。

下图显示了 JMS 消息的基本消息组件以及它们是如何映射到 Solace SMF 消息组件的。这些是逻辑图,而不是线缆图。

JMS 和 SMF 消息部分的映射

img

会影响事件代理处理消息的 JMS 标头字段被映射到 SMF 标头,而所有其他 JMS 参数都被映射到用户属性。

许多消息标头字段参数可以通过 Solace 消息 API 的设置和获取操作被客户端应用程序访问。例如,如果一个 JMS 应用程序为消息设置了一个相关 ID(通过 message.setJMSCorrelationID(...)),然后将其发布到队列目标,那么使用 Solace C API 的客户端应用程序可以接收该消息,并通过获取函数(在这种情况下,是 solClient_msg_getCorrelationId(...))检索为该消息设置的相关 ID。

消息正文

JMS 消息正文包含在 SMF 消息的二进制数据负载中。消息正文可以通过 Solace API 的设置和获取操作被客户端应用程序访问。例如,使用 Solace .NET API 的客户端应用程序可以创建一个消息(IMessage message = session.CreateMessage()),然后通过适当的设置方法添加文本正文(SDTUtils.SetText(message, "this is the body text")。然后,使用 JMS API 的另一个客户端应用程序可以使用 TextMessage.getText() 方法检索文本消息的正文。

如果使用 Solace 消息属性 SOLACE_JMS_PROP_ISXML,则表示文本消息包含 XML 内容,正文将进入 XML 数据负载中。

下表显示了标准 JMS 消息标头字段及其等效的 Solace SMF 消息标头字段。

JMSSolace包含在
JMSCorrelationIDCorrelationID消息属性
JMSDeliveryModeDeliveryModeSMF 标头
JMSDestinationDestinationSMF 标头
JMSExpirationExpiration消息属性
JMSMessageIDApplicationMessageID消息属性
JMSRedeliveredRedeliveredSMF 标头
JMSReplyToReplyTo消息属性
JMSTimestampSenderTimeStamp消息属性
JMSTypeApplicationMessageType消息属性
JMSPriorityPrioritySMF 标头

JMS 标头字段及其 Solace 等效项

有关可用的获取和设置方法的详细信息,请参阅适用于适当消息 API 的 PubSub+ 消息 API。