Streaming Compressed Connections
An application using Solace enterprise or OpenMAMA messaging APIs can enable the compression of message data sent between it and Solace PubSub+ applications, so that message data is compressed before transmission and decompressed on reception.
Streaming compressed connections reduces the size of message data frames to be transmitted over a network link. Reducing the size of a frame reduces the time required to transmit the frame across the network. Data compression provides a coding scheme at each end of a transmission link that allows characters to be removed from the frames of data at the sending side of the link and then replaced correctly at the receiving side. Because the condensed frames take up less bandwidth, greater volumes of data can be transmitted at any one time.
Using data compression may reduce bandwidth consumption and provide lower latency over low-bandwidth connections between clients and event brokers.
Solace also offers end-to-end payload compression in the PubSub+ Messaging APIs. We recommend you only use one form of compression, either message compression through the event broker or end-to-end payload compression through the APIs. Compressing the same message multiple times can waste resources and usually does not result in smaller message sizes. For more information, see Support for End-to-End Payload Compression.
Message compression is not supported for clients using Solace Web messaging APIs, REST, or MQTT.
Where compression and decompression are performed
On event brokers, compression and decompression of message data is performed by the Network Acceleration Blade (NAB). For clients using the messaging APIs, compression and decompression of message data is performed by the third-party library.
Channel compression
When channel compression is used, an event broker listens to a special TCP port (by default, 55003), and when channel TLS + compression is used, a different TCP port is listened to (by default 55443). This means that the value for the session property on the client side must be set to match the applicable port number on the event broker.
Compression on event broker side
For compression on the event broker side, the message data is sent from the publishing client into the NAB compression engine of the event broker for compressing. Once the compressed data is available, it's sent out to the subscribing clients over the client connection.
Decompression on event broker side
For decompression on the event broker side, the event broker puts the compressed message data received from the connection into the NAB decompression engine for decompressing. Once the decompressed message data is available, it's handed over to the upper layer application for further processing.
If an unrecoverable error is detected during the decompression operation, the associated connection is disconnected. This applies to both the event broker and client API ends of the transmission link.