使用MongoDB客户端
MongoDB是一个众所周知的NoSQL数据库,被广泛使用。
在本指南中,我们看到如何让你的REST服务使用MongoDB数据库。
前提
完成这个指南,你需要:
-
大概15分钟
-
编辑器
-
JDK 17+ installed with
JAVA_HOME
configured appropriately -
Apache Maven 3.9.9
-
如果你愿意的话,还可以选择使用Quarkus CLI
-
如果你想构建原生可执行程序,可以选择安装Mandrel或者GraalVM,并正确配置(或者使用Docker在容器中进行构建)
-
安装了MongoDB或安装了Docker
解决方案
我们建议您按照下一节的说明逐步创建应用程序。然而,您可以直接转到已完成的示例。
克隆 Git 仓库。 git clone https://github.com/quarkusio/quarkus-quickstarts.git
,或者下载一个 存档 。
The solution is located in the mongodb-quickstart
directory.
创建Maven项目
首先,我们需要一个新的项目。使用以下命令创建一个新项目:
For Windows users:
-
If using cmd, (don’t use backward slash
\
and put everything on the same line) -
If using Powershell, wrap
-D
parameters in double quotes e.g."-DprojectArtifactId=mongodb-quickstart"
This command generates a Maven structure importing the Quarkus REST (formerly RESTEasy Reactive) Jackson and MongoDB Client extensions.
After this, the quarkus-mongodb-client
extension has been added to your build file.
如果你已经配置了你的Quarkus项目,你可以通过在你的项目基础目录下运行以下命令,将 mongodb-client
扩展添加到你的项目中:
quarkus extension add mongodb-client
./mvnw quarkus:add-extension -Dextensions='mongodb-client'
./gradlew addExtension --extensions='mongodb-client'
这将在你的 pom.xml
中添加以下内容:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mongodb-client</artifactId>
</dependency>
implementation("io.quarkus:quarkus-mongodb-client")
创建你的第一个JSON REST服务
在这个例子中,我们将创建一个应用程序来管理fruit列表。
首先,让我们创建 Fruit
实体类,如下所示:
package org.acme.mongodb;
import java.util.Objects;
public class Fruit {
private String name;
private String description;
private String id;
public Fruit() {
}
public Fruit(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Fruit)) {
return false;
}
Fruit other = (Fruit) obj;
return Objects.equals(other.name, this.name);
}
@Override
public int hashCode() {
return Objects.hash(this.name);
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
}
这非常的简单。需要注意的一件事是, JSON 序列化层需要具有默认构造函数。
现在创建一个 org.acme.mongodb.FruitService
,它将是我们应用程序的业务层,并从mongoDB数据库 store/load fruits。
package org.acme.mongodb;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@ApplicationScoped
public class FruitService {
@Inject MongoClient mongoClient;
public List<Fruit> list(){
List<Fruit> list = new ArrayList<>();
MongoCursor<Document> cursor = getCollection().find().iterator();
try {
while (cursor.hasNext()) {
Document document = cursor.next();
Fruit fruit = new Fruit();
fruit.setName(document.getString("name"));
fruit.setDescription(document.getString("description"));
list.add(fruit);
}
} finally {
cursor.close();
}
return list;
}
public void add(Fruit fruit){
Document document = new Document()
.append("name", fruit.getName())
.append("description", fruit.getDescription());
getCollection().insertOne(document);
}
private MongoCollection getCollection(){
return mongoClient.getDatabase("fruit").getCollection("fruit");
}
}
现在,创建 org.acme.mongodb.FruitResource
类,如下所示:
@Path("/fruits")
public class FruitResource {
@Inject FruitService fruitService;
@GET
public List<Fruit> list() {
return fruitService.list();
}
@POST
public List<Fruit> add(Fruit fruit) {
fruitService.add(fruit);
return list();
}
}
The implementation is pretty straightforward, and you just need to define your endpoints using the Jakarta REST annotations and use the FruitService
to list/add new fruits.
配置MongoDB数据库
The main property to configure is the URL to access to MongoDB. Almost all configuration can be included in the connection URI, so we advise you to do so. You can find more information in the MongoDB documentation: https://docs.mongodb.com/manual/reference/connection-string/
示例配置应如下所示:
# configure the mongoDB client for a replica set of two nodes
quarkus.mongodb.connection-string = mongodb://mongo1:27017,mongo2:27017
在此示例中,我们在 localhost 上运行的单个实例:
# configure the mongoDB client for a single instance on localhost
quarkus.mongodb.connection-string = mongodb://localhost:27017
如果你需要更多的配置属性,在本指南的末尾有一个完整的列表。
By default, Quarkus will restrict the use of JNDI within an application, as a precaution to try and mitigate any future vulnerabilities similar to Log4Shell.
Because the mongo+srv protocol often used to connect to MongoDB requires JNDI, this protection is automatically disabled when using the MongoDB client extension.
|
Use the MongoDB Dev Services
See MongoDB Dev Services.
多个MongoDB客户端
MongoDB允许你配置多个客户端。使用多个客户端的方式与拥有一个客户端的方式相同。
quarkus.mongodb.connection-string = mongodb://login:pass@mongo1:27017/database
quarkus.mongodb.users.connection-string = mongodb://mongo2:27017/userdb
quarkus.mongodb.inventory.connection-string = mongodb://mongo3:27017/invdb,mongo4:27017/invdb
注意在键中有一个额外的位( users
和 inventory
段)。语法如下: quarkus.mongodb.[optional name.][mongo connection property]
。如果省略了名称,则配置默认的客户端。
The use of multiple MongoDB clients enables multi-tenancy for MongoDB by allowing to connect to multiple MongoDB clusters. |
以Mongo客户端的名字进行注入
当使用多个客户端时,每个 MongoClient
,你可以使用 io.quarkus.mongodb.MongoClientName
修饰语选择要注入的客户端。使用上述属性来配置三个不同的客户端,你也可以按以下方式来注入每个客户端:
@Inject
MongoClient defaultMongoClient;
@Inject
@MongoClientName("users")
MongoClient mongoClient1;
@Inject
@MongoClientName("inventory")
ReactiveMongoClient mongoClient2;
运行MongoDB数据库
在默认情况下, MongoClient
被配置为在27017端口(默认的MongoDB端口)上访问本地的MongoDB数据库,如果你在这个端口上有一个本地运行的数据库,那么在能够测试之前,不需要做其他操作!
如果你想使用Docker来运行MongoDB数据库,你可以使用以下命令来启动一个数据库:
docker run -ti --rm -p 27017:27017 mongo:4.4
If you use Dev Services, launching the container manually is not necessary. |
创建一个网页
Now let’s add a simple web page to interact with our FruitResource
.
Quarkus automatically serves static resources located under the META-INF/resources
directory.
In the src/main/resources/META-INF/resources
directory, add a fruits.html
file with the content from this fruits.html file in it.
现在你可以与你的REST服务进行交互:
-
启动Quarkus:
CLIquarkus dev
Maven./mvnw quarkus:dev
Gradle./gradlew --console=plain quarkusDev
-
打开浏览器访问
<a href="http://localhost:8080/fruits.html" class="bare">http://localhost:8080/fruits.html</a>
-
通过表格添加新的fruits到列表中
响应式MongoDB客户端
Quarkus中包含一个响应式MongoDB客户端。使用它就像使用经典的MongoDB客户端一样简单。你可以重写前面的例子来使用它,如下所示:
Mutiny
MongoDB的响应式客户端使用Mutiny响应式类型。如果你不熟悉Mutiny,请查看 Mutiny - 一个直观的响应式编程库 。 |
package org.acme.mongodb;
import io.quarkus.mongodb.reactive.ReactiveMongoClient;
import io.quarkus.mongodb.reactive.ReactiveMongoCollection;
import io.smallrye.mutiny.Uni;
import org.bson.Document;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.List;
@ApplicationScoped
public class ReactiveFruitService {
@Inject
ReactiveMongoClient mongoClient;
public Uni<List<Fruit>> list() {
return getCollection().find()
.map(doc -> {
Fruit fruit = new Fruit();
fruit.setName(doc.getString("name"));
fruit.setDescription(doc.getString("description"));
return fruit;
}).collect().asList();
}
public Uni<Void> add(Fruit fruit) {
Document document = new Document()
.append("name", fruit.getName())
.append("description", fruit.getDescription());
return getCollection().insertOne(document)
.onItem().ignore().andContinueWithNull();
}
private ReactiveMongoCollection<Document> getCollection() {
return mongoClient.getDatabase("fruit").getCollection("fruit");
}
}
package org.acme.mongodb;
import io.smallrye.mutiny.Uni;
import java.util.List;
import jakarta.inject.Inject;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.core.MediaType;
@Path("/reactive_fruits")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ReactiveFruitResource {
@Inject
ReactiveFruitService fruitService;
@GET
public Uni<List<Fruit>> list() {
return fruitService.list();
}
@POST
public Uni<List<Fruit>> add(Fruit fruit) {
return fruitService.add(fruit)
.onItem().ignore().andSwitchTo(this::list);
}
}
使用BSON编解码器简化MongoDB客户端的使用
通过使用Bson Codec
,MongoDB 客户端将自动处理您的域对象与 MongoDB Document
的相互转化。
First you need to create a Bson Codec
that will tell Bson how to transform your entity to/from a MongoDB Document
.
Here we use a CollectibleCodec
as our object is retrievable from the database (it has a MongoDB identifier), if not we would have used a Codec
instead.
More information in the codec documentation: https://www.mongodb.com/docs/drivers/java/sync/current/fundamentals/data-formats/codecs/.
package org.acme.mongodb.codec;
import com.mongodb.MongoClientSettings;
import org.acme.mongodb.Fruit;
import org.bson.Document;
import org.bson.BsonWriter;
import org.bson.BsonValue;
import org.bson.BsonReader;
import org.bson.BsonString;
import org.bson.codecs.Codec;
import org.bson.codecs.CollectibleCodec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import java.util.UUID;
public class FruitCodec implements CollectibleCodec<Fruit> {
private final Codec<Document> documentCodec;
public FruitCodec() {
this.documentCodec = MongoClientSettings.getDefaultCodecRegistry().get(Document.class);
}
@Override
public void encode(BsonWriter writer, Fruit fruit, EncoderContext encoderContext) {
Document doc = new Document();
doc.put("name", fruit.getName());
doc.put("description", fruit.getDescription());
documentCodec.encode(writer, doc, encoderContext);
}
@Override
public Class<Fruit> getEncoderClass() {
return Fruit.class;
}
@Override
public Fruit generateIdIfAbsentFromDocument(Fruit document) {
if (!documentHasId(document)) {
document.setId(UUID.randomUUID().toString());
}
return document;
}
@Override
public boolean documentHasId(Fruit document) {
return document.getId() != null;
}
@Override
public BsonValue getDocumentId(Fruit document) {
return new BsonString(document.getId());
}
@Override
public Fruit decode(BsonReader reader, DecoderContext decoderContext) {
Document document = documentCodec.decode(reader, decoderContext);
Fruit fruit = new Fruit();
if (document.getString("id") != null) {
fruit.setId(document.getString("id"));
}
fruit.setName(document.getString("name"));
fruit.setDescription(document.getString("description"));
return fruit;
}
}
然后你需要创建一个 CodecProvider
来把这个 Codec
链接到 Fruit
类。
package org.acme.mongodb.codec;
import org.acme.mongodb.Fruit;
import org.bson.codecs.Codec;
import org.bson.codecs.configuration.CodecProvider;
import org.bson.codecs.configuration.CodecRegistry;
public class FruitCodecProvider implements CodecProvider {
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
if (clazz.equals(Fruit.class)) {
return (Codec<T>) new FruitCodec();
}
return null;
}
}
Quarkus负责为你注册 CodecProvider
,作为 @Singleton
范围的CDI bean。
最后,当从数据库中获取 MongoCollection
时,你可以直接使用 Fruit
类,而不是 Document
,编解码器会自动将 Document
与 Fruit
类相互映射(从 Fruit
类映射 Document
或者将 Document
映射到 Fruit
类)。
这是一个将 MongoCollection
与 FruitCodec
一起使用的示例。
package org.acme.mongodb;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@ApplicationScoped
public class CodecFruitService {
@Inject MongoClient mongoClient;
public List<Fruit> list(){
List<Fruit> list = new ArrayList<>();
MongoCursor<Fruit> cursor = getCollection().find().iterator();
try {
while (cursor.hasNext()) {
list.add(cursor.next());
}
} finally {
cursor.close();
}
return list;
}
public void add(Fruit fruit){
getCollection().insertOne(fruit);
}
private MongoCollection<Fruit> getCollection(){
return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);
}
}
POJO编解码器
The POJO Codec provides a set of annotations that enable the customization of the way a POJO is mapped to a MongoDB collection and this codec is initialized automatically by Quarkus. This codec also supports Java records so you can use them for your POJOs or an attribute of your POJOs.
其中一个注解是 @BsonDiscriminator
,它允许通过在文档中添加一个判别字段来在单个MongoDB集合中存储多个Java类型。在处理抽象类型或接口时,它可能很有用。
Quarkus 将使用 POJO codec自动注册所有使用 @BsonDiscriminator
的类。
POJO Codec通过 PropertyCodecProvider
增强了对泛型的支持,Quarkus会自动在POJO Codec中注册任何 PropertyCodecProvider
(这些类会自动成为 @Singleton
范围的CDI bean)。当构建本地可执行文件和使用用泛型类型时,你可能需要用反射来注册类型参数。
用Panache简化MongoDB
MongoDB with Panache 扩展通过提供活动记录样式实体(和存储库)来促进 MongoDB 的使用,就像您在 Hibernate ORM with Panache 中所拥有的一样,并关注让你的实体在 Quarkus 中编写变得简单而有趣。
Schema migration with Liquibase
The Liquibase MongoDB extension facilitates the initialization of a MongoDB database including indices and initial data. It implements the same schema migration facilities that Liquibase offers for SQL databases.
连接健康检查
如果你使用 quarkus-smallrye-health
扩展, quarkus-mongodb-client
将自动添加就绪状态检查,以验证与集群的连接。
因此,当你访问你的应用程序的 /q/health/ready
端点时,您将获得有关连接验证状态的信息。
可以通过在 application.properties
中将 quarkus.mongodb.health.enabled
属性设置为 false
来禁用此行为。
指标
如果你使用 quarkus-micrometer
或 quarkus-smallrye-metrics
扩展, quarkus-mongodb-client
可以提供关于连接池的指标。这种行为必须首先通过在你的 application.properties
中设置 quarkus.mongodb.metrics.enabled
属性为 true
来启用。
因此,当你访问你的应用程序的 /q/metrics
端点时,你将得到有关连接池状态的信息。当使用 SmallRye Metrics 时,连接池指标将在 vendor
范围内可用。
跟踪
To use tracing with MongoDB, you need to add the quarkus-opentelemetry
extension to your project.
Even with all the tracing infrastructure in place the mongodb tracing is not enabled by default, and you need to enable it by setting this property:
# enable tracing
quarkus.mongodb.tracing.enabled=true
测试助手
Dev Services for MongoDB is your best option to start a MongoDB database for your unit tests.
But if you can’t use it, you can start a MongoDB database using one of the two QuarkusTestResourceLifecycleManager
that Quarkus provides.
They rely on Flapdoodle embedded MongoDB.
-
io.quarkus.test.mongodb.MongoTestResource
将在27017端口启动一个单一的实例。 -
io.quarkus.test.mongodb.MongoReplicaSetTestResource
将启动一个有两个实例的复制集,一个在27017端口,另一个在27018端口。
要使用它们,你需要在你的pom.xml中添加 io.quarkus:quarkus-test-mongodb
依赖。
有关 QuarkusTestResourceLifecycleManager
的更多信息,请阅读 Quarkus测试资源 。
To set the desired port MongoDB will listen to when it is launched, the following code should be used:
To set the desired MongoDB version that will be launched, the following code should be used:
The string value used can be any of one of the |
旧客户端
我们默认不包括旧版的MongoDB客户端。它包含现已废弃的MongoDB Java API(DB、DBCollection……)以及现已被 com.mongodb.client.MongoClient
所取代的 com.mongodb.MongoClient
。
如果你想使用旧的API,你需要在你的构建文件中添加以下依赖:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-legacy</artifactId>
</dependency>
implementation("org.mongodb:mongodb-driver-legacy")
构建一个本地可执行文件
你可以在一个本地可执行文件中使用MongoDB客户端。
如果你想使用SSL/TLS加密,你需要在你的 application.properties
中添加这些属性:
quarkus.mongodb.tls=true
quarkus.mongodb.tls-insecure=true # only if TLS certificate cannot be validated
然后你可以用常用的命令构建一个本地可执行文件:
quarkus build --native
./mvnw install -Dnative
./gradlew build -Dquarkus.native.enabled=true
运行它就像执行 ./target/mongodb-quickstart-1.0.0-SNAPSHOT-runner
一样简单。
然后你可以使用的浏览器访问 <a href="http://localhost:8080/fruits.html" class="bare">http://localhost:8080/fruits.html</a>
来使用你的应用程序。
目前,Quarkus在本地模式下不支持 客户端字段级加密 。 |
If you encounter the following error when running your application in native mode: |
Customize the Mongo client configuration programmatically
If you need to customize the Mongo client configuration programmatically, you need to implement the io.quarkus.mongodb.runtime.MongoClientCustomizer
interface and expose it as a CDI application scoped bean:
@ApplicationScoped
public class MyCustomizer implements MongoClientCustomizer {
@Override
public MongoClientSettings.Builder customize(MongoClientSettings.Builder builder) {
return builder.applicationName("my-app");
}
}
The bean can customize a specific client using the @MongoClientName
qualifier to indicate the client name.
When there is no qualifier, it customizes the default client.
At most one customizer can be used per client.
If multiple customizers targeting the same client are detected, an exception is thrown at build time.
This feature can be used to configure client-side field level encryption (CSFLE). Follows the instructions from the Mongo web site to configure CSFLE:
@ApplicationScoped
public class MyCustomizer implements MongoClientCustomizer {
@Override
public MongoClientSettings.Builder customize(MongoClientSettings.Builder builder) {
Map<String, Map<String, Object>> kmsProviders = getKmsProviders();
String dek = getDataEncryptionKey();
Map<String, BsonDocument> schema = getSchema(dek);
Map<String, Object> extraOptions = new HashMap<>();
extraOptions.put("cryptSharedLibPath", "<path to crypt shared library>");
return builder.autoEncryptionSettings(AutoEncryptionSettings.builder()
.keyVaultNamespace(KEY_VAULT_NAMESPACE)
.kmsProviders(kmsProviders)
.schemaMap(schemaMap)
.extraOptions(extraOptions)
.build());
}
}
Client-side field level encryption, and feature relying on Mongo Crypt in general, are not supported in native mode. |
配置参考
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Configuration property |
类型 |
默认 |
---|---|---|
Whether a health check is published in case the smallrye-health extension is present. Environment variable: Show more |
boolean |
|
Whether metrics are published in case a metrics extension is present. Environment variable: Show more |
boolean |
|
If set to true, the default clients will always be created even if there are no injection points that use them Environment variable: Show more |
boolean |
|
Whether or not tracing spans of driver commands are sent in case the quarkus-opentelemetry extension is present. Environment variable: Show more |
boolean |
|
Configures the connection string. The format is:
An alternative format, using the
Environment variable: Show more |
string |
|
Configures the MongoDB server addressed (one if single mode). The addresses are passed as Environment variable: Show more |
list of string |
|
Configure the database name. Environment variable: Show more |
string |
|
Configures the application name. Environment variable: Show more |
string |
|
Configures the maximum number of connections in the connection pool. Environment variable: Show more |
int |
|
Configures the minimum number of connections in the connection pool. Environment variable: Show more |
int |
|
Maximum idle time of a pooled connection. A connection that exceeds this limit will be closed. Environment variable: Show more |
||
Maximum lifetime of a pooled connection. A connection that exceeds this limit will be closed. Environment variable: Show more |
||
Configures the time period between runs of the maintenance job. Environment variable: Show more |
||
Configures period of time to wait before running the first maintenance job on the connection pool. Environment variable: Show more |
||
How long a connection can take to be opened before timing out. Environment variable: Show more |
||
How long a socket read can take before timing out. Environment variable: Show more |
||
If connecting with TLS, this option enables insecure TLS connections. Environment variable: Show more |
boolean |
|
Whether to connect using TLS. Environment variable: Show more |
boolean |
|
Implies that the hosts given are a seed list, and the driver will attempt to find all members of the set. Environment variable: Show more |
string |
|
How long the driver will wait for server selection to succeed before throwing an exception. Environment variable: Show more |
||
When choosing among multiple MongoDB servers to send a request, the driver will only send that request to a server whose ping time is less than or equal to the server with the fastest ping time plus the local threshold. Environment variable: Show more |
||
The frequency that the driver will attempt to determine the current state of each server in the cluster. Environment variable: Show more |
||
Configures the read concern. Supported values are: Environment variable: Show more |
string |
|
Configures the read preference. Supported values are: Environment variable: Show more |
string |
|
The database used during the readiness health checks Environment variable: Show more |
string |
|
Configures the UUID representation to use when encoding instances of Environment variable: Show more |
|
|
This property configures the DNS server. If the server is not set, it tries to read the first Environment variable: Show more |
string |
|
This property configures the DNS server port. Environment variable: Show more |
int |
|
If Environment variable: Show more |
|
|
This property enables the logging ot the DNS lookup. It can be useful to understand why the lookup fails. Environment variable: Show more |
boolean |
|
Configures the connection string. The format is:
An alternative format, using the
Environment variable: Show more |
string |
|
Configures the MongoDB server addressed (one if single mode). The addresses are passed as Environment variable: Show more |
list of string |
|
Configure the database name. Environment variable: Show more |
string |
|
Configures the application name. Environment variable: Show more |
string |
|
Configures the maximum number of connections in the connection pool. Environment variable: Show more |
int |
|
Configures the minimum number of connections in the connection pool. Environment variable: Show more |
int |
|
Maximum idle time of a pooled connection. A connection that exceeds this limit will be closed. Environment variable: Show more |
||
Maximum lifetime of a pooled connection. A connection that exceeds this limit will be closed. Environment variable: Show more |
||
Configures the time period between runs of the maintenance job. Environment variable: Show more |
||
Configures period of time to wait before running the first maintenance job on the connection pool. Environment variable: Show more |
||
How long a connection can take to be opened before timing out. Environment variable: Show more |
||
How long a socket read can take before timing out. Environment variable: Show more |
||
If connecting with TLS, this option enables insecure TLS connections. Environment variable: Show more |
boolean |
|
Whether to connect using TLS. Environment variable: Show more |
boolean |
|
Implies that the hosts given are a seed list, and the driver will attempt to find all members of the set. Environment variable: Show more |
string |
|
How long the driver will wait for server selection to succeed before throwing an exception. Environment variable: Show more |
||
When choosing among multiple MongoDB servers to send a request, the driver will only send that request to a server whose ping time is less than or equal to the server with the fastest ping time plus the local threshold. Environment variable: Show more |
||
The frequency that the driver will attempt to determine the current state of each server in the cluster. Environment variable: Show more |
||
Configures the read concern. Supported values are: Environment variable: Show more |
string |
|
Configures the read preference. Supported values are: Environment variable: Show more |
string |
|
The database used during the readiness health checks Environment variable: Show more |
string |
|
Configures the UUID representation to use when encoding instances of Environment variable: Show more |
|
|
类型 |
默认 |
|
If DevServices has been explicitly enabled or disabled. DevServices is generally enabled by default, unless there is an existing configuration present. When DevServices is enabled Quarkus will attempt to automatically configure and start a database when running in Dev or Test mode. Environment variable: Show more |
boolean |
|
The container image name to use, for container based DevServices providers. Environment variable: Show more |
string |
|
Optional fixed port the dev service will listen to. If not defined, the port will be chosen randomly. Environment variable: Show more |
int |
|
Generic properties that are added to the connection URL. Environment variable: Show more |
Map<String,String> |
|
Environment variables that are passed to the container. Environment variable: Show more |
Map<String,String> |
|
Indicates if the MongoDB server managed by Quarkus Dev Services is shared. When shared, Quarkus looks for running containers using label-based service discovery. If a matching container is found, it is used, and so a second one is not started. Otherwise, Dev Services for MongoDB starts a new container. The discovery uses the Container sharing is only used in dev mode. Environment variable: Show more |
boolean |
|
The value of the Environment variable: Show more |
string |
|
类型 |
默认 |
|
Configures the safety. If set to Environment variable: Show more |
boolean |
|
Configures the journal writing aspect. If set to Environment variable: Show more |
boolean |
|
When set, the driver adds Environment variable: Show more |
string |
|
If set to Environment variable: Show more |
boolean |
|
When set, the driver adds Environment variable: Show more |
||
类型 |
默认 |
|
Configures the username. Environment variable: Show more |
string |
|
Configures the password. Environment variable: Show more |
string |
|
Configures the authentication mechanism to use if a credential was supplied. The default is unspecified, in which case the client will pick the most secure mechanism available based on the sever version. For the GSSAPI and MONGODB-X509 mechanisms, no password is accepted, only the username. Supported values: null or Environment variable: Show more |
string |
|
Configures the source of the authentication credentials. This is typically the database where the credentials have been created. The value defaults to the database specified in the path portion of the connection string or in the 'database' configuration property. If the database is specified in neither place, the default value is Environment variable: Show more |
string |
|
Allows passing authentication mechanism properties. Environment variable: Show more |
Map<String,String> |
|
The credentials provider name Environment variable: Show more |
string |
|
The credentials provider bean name. This is a bean name (as in For Vault, the credentials provider bean name is Environment variable: Show more |
string |
|
类型 |
默认 |
|
Configures the safety. If set to Environment variable: Show more |
boolean |
|
Configures the journal writing aspect. If set to Environment variable: Show more |
boolean |
|
When set, the driver adds Environment variable: Show more |
string |
|
If set to Environment variable: Show more |
boolean |
|
When set, the driver adds Environment variable: Show more |
||
类型 |
默认 |
|
Configures the username. Environment variable: Show more |
string |
|
Configures the password. Environment variable: Show more |
string |
|
Configures the authentication mechanism to use if a credential was supplied. The default is unspecified, in which case the client will pick the most secure mechanism available based on the sever version. For the GSSAPI and MONGODB-X509 mechanisms, no password is accepted, only the username. Supported values: null or Environment variable: Show more |
string |
|
Configures the source of the authentication credentials. This is typically the database where the credentials have been created. The value defaults to the database specified in the path portion of the connection string or in the 'database' configuration property. If the database is specified in neither place, the default value is Environment variable: Show more |
string |
|
Allows passing authentication mechanism properties. Environment variable: Show more |
Map<String,String> |
|
The credentials provider name Environment variable: Show more |
string |
|
The credentials provider bean name. This is a bean name (as in For Vault, the credentials provider bean name is Environment variable: Show more |
string |
About the Duration format
To write duration values, use the standard You can also use a simplified format, starting with a number:
In other cases, the simplified format is translated to the
|