Docs Menu
Docs Home
/ / /
Java Reactive Streams Driver
/

Compress Network Traffic

On this page

  • Specify Compression Algorithms
  • Compression Algorithm Dependencies
  • API Documentation

The Java Reactive Streams driver provides a connection option to compress messages, which reduces the amount of data passed over the network between MongoDB and your application.

The driver supports the following algorithms:

  • Snappy: available in MongoDB 3.4 and later.

  • Zlib: available in MongoDB 3.6 and later.

  • Zstandard: available in MongoDB 4.2 and later.

The driver tests against the following versions of these libraries:

  • org.xerial.snappy:snappy-java:1.1.10.3

  • com.github.luben:zstd-jni:1.5.5-3

If you specify multiple compression algorithms, the driver selects the first one in the list supported by your MongoDB instance.

Note

Applications that require Snappy or Zstandard compression must add explicit dependencies for those algorithms.

You can enable compression for the connection to your MongoDB instance by specifying the algorithms in one of two ways. Select the Connection String or MongoClientSettings tab to see the corresponding syntax:

  • In the compressors parameter of your connection string

  • In the compressorList method chained to the MongoClientSettings.builder() method

The following example shows how to specify all compression algorithms:

ConnectionString connectionString = new ConnectionString(
"mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);
MongoClientSettings settings = MongoClientSettings.builder()
.compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor()))
.build();
MongoClient client = MongoClients.create(settings);

The JDK natively supports Zlib compression. However, Snappy and Zstandard depend on open source Java implementations. To learn more about these implementations, see the following Github pages:

To learn more about any of the methods or types discussed in this guide, see the following API documentation:

Back

TLS/SSL