One of the key roles of the Solace router is to act as a multi-protocol message bus allowing various diverse applications to communicate. REST messaging is one of many messaging protocols supported on Solace routers. However, to perform high-speed topic routing and Guaranteed Messaging, Solace routers convert all messages to SMF, which is the format used by the Solace router internally when processing messages.
Just like the Java Message Service (JMS) API and other Solace APIs, REST messaging allows users to create fully-featured messages. The following figure and description provides an overview of the mapping between REST messaging HTTP POST requests, internal SMF format, and standard JMS messages. For full details of how to encode a REST message using HTTP, refer to Solace REST Overview.
The Request URI of the HTTP POST contains the target destination and destination type for the message. These are mapped into the SMF headers and are available in the JMS API message headers as well.
Most often, the HTTP POST will also contain HTTP header fields, which add further properties to the message. This is where, for example, the reply wait time can be specified for request/reply or how the content type and encoding will be communicated. If the Solace router requires these message properties, they are carried in the SMF message headers. If they are related to end-to-end message delivery, they are carried as message properties. In JMS, these properties are available as custom Solace JMS extended properties following the conventions supported by the JMS API.
Messages can also contain custom application properties. These are encoded in the HTTP POST using the described Solace User Property <Name>“Solace-User-Property” format as outlined in the Solace REST Messaging Protocol document. These properties travel end-to-end with the message and are available in all Solace APIs and in JMS through the custom property interface. These properties are an excellent place to encode application-specific message details like message format or any other message processing properties.
The HTTP POST request body contains the message contents. The contents are encoded in the SMF message as outlined in Solace REST Overview. REST messaging supports both the text and binary bytes message formats.