An application using Solace enterprise or OpenMAMA messaging APIs can enable the compression of message data sent between it and Solace PubSub+ so that message data is compressed before transmission and decompressed on reception.
Message compression 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 message brokers.
Note: Message compression is not supported for clients using Solace Web messaging APIs, REST, or MQTT.
Where compression and decompression are performed
On message 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.
When channel compression is used, a message 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 message broker.
Compression on message broker side
For compression on the message broker side, the message data is sent from the publishing client into the NAB compression engine of the message broker for compressing. Once the compressed data is available, it's sent out to the subscribing clients over the client connection.
Decompression on message broker side
For decompression on the message broker side, the message 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.
Note: If an unrecoverable error is detected during the decompression operation, the associated connection is disconnected. This applies to both the message broker and client API ends of the transmission link.