El controlador Java Reactive Streams admite la compresión de mensajes hacia y desde servidores MongoDB. El controlador implementa los tres algoritmos compatibles con los servidores MongoDB:
RápidoLa compresión rápida se puede utilizar al conectarse a servidores MongoDB que ejecutan la versión 3.4 y posteriores.
Zlib: la compresión Zlib se puede utilizar al conectarse a servidores MongoDB que ejecutan la versión,3 6 y posteriores.
Zstandard: la compresión Zstandard se puede utilizar al conectarse a servidores MongoDB que ejecutan la versión,4 2 y posteriores.
El controlador negociará qué algoritmo de compresión, si se utiliza alguno, se utilizará en función de las capacidades anunciadas por el servidor en el hello respuesta de comando
Especificar la compresión mediante ConnectionString
Incluya las siguientes declaraciones de importación:
import com.mongodb.ConnectionString; import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient;
Para especificar la compresión dentro de un ConnectionString, especifique compresores como parte de la cadena de conexión.
El siguiente código especifica el algoritmo de compresión Snappy:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy"); MongoClient mongoClient = MongoClients.create(connectionString);
El siguiente código especifica el algoritmo de compresión Zlib:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zlib"); MongoClient mongoClient = MongoClients.create(connectionString);
El siguiente código especifica el algoritmo de compresión Zstandard:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
El siguiente código especifica múltiples algoritmos de compresión:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
En todos los casos, el controlador utiliza el primer compresor de la lista para el cual el servidor tiene soporte.
Especificar la compresión mediante MongoClientSettings
Incluya las siguientes declaraciones de importación:
import com.mongodb.MongoClientSettings; import com.mongodb.MongoCompressor; import java.util.Arrays;
Para especificar la compresión dentro de una instancia MongoClientSettings, establezca la propiedad compressors en una lista de MongoCompressor instancias.
El siguiente código especifica el algoritmo de compresión Snappy:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor())) .build(); MongoClient client = MongoClients.create(settings);
El siguiente código especifica el algoritmo de compresión Zlib:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZlibCompressor())) .build(); MongoClient client = MongoClients.create(settings);
El siguiente código especifica el algoritmo de compresión Zstandard:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
El siguiente código especifica múltiples algoritmos de compresión:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
Al igual que con la configuración que utiliza una URI, el controlador utiliza el primer compresor de la lista para el cual el servidor tiene soporte.
Dependencies
Dado que el JDK no tiene compatibilidad integrada con Snappy ni Zstandard, el controlador depende de las implementaciones de código abierto existentes de Snappy y Zstandard. Para más información,consulte los repositorios de GitHub snappy-java y zstd-java.