Integrate Min.io sdk compatible with all S3 Api complient vendors. Available for jdk and native runtime.
Configuration
Once you have your Quarkus project configured you can add the minio
extension
to your project by running the following command in your project base directory:
./mvnw quarkus:add-extension -Dextensions="minio"
This will add the following to your pom.xml
:
<dependency>
<groupId>io.quarkiverse.minio</groupId>
<artifactId>quarkus-minio</artifactId>
<version>2.9.3</version>
</dependency>
Usage
An io.minio.MinioClient
is made available to your application as a CDI bean if configuration is found.
package com.acme.minio;
import io.minio.MinioClient;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
public class SampleService {
@Inject
MinioClient minioClient;
@ConfigProperty(name = "minio.bucket-name")
String bucketName;
public String getObject(String objectName) {
try (InputStream is = minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
) {
// Do whatever you want...
} catch (MinioException e) {
throw new IllegalStateException(e);
}
}
}
Configuration Reference
Configuration property |
Type |
Default |
||
---|---|---|---|---|
The minio server URL.
|
string |
|||
The minio server access key |
string |
|||
The minio server secret key |
string |
|||
An optional bucket region |
string |
|||
If allow-empty is set to |
string |
|||
If |
boolean |
|
Dev Services
Quarkus supports a feature called Dev Services that allows you to create various containers without any config.
What that means in practice is that if you have Docker running and have not configured quarkus.minio.url
,
Quarkus will automatically start a Minio container when running tests or in dev mode, and automatically
configure the connection.
When running the production version of the application, the Minio connection needs to be configured as normal.
Shared server
Most of the time you need to share the server between applications. Dev Services for Minio implements a service discovery mechanism for your multiple Quarkus applications running in dev mode to share a single server.
Dev Services for Minio starts the container with the quarkus-dev-service-minio label which is used to identify the container.
|
If you need multiple (shared) servers, you can configure the quarkus.minio.devservices.service-name
attribute and indicate the server name.
It looks for a container with the same value, or starts a new one if none can be found.
The default service name is minio
.
Sharing is enabled by default in dev mode, but disabled in test mode.
You can disable the sharing with quarkus.minio.devservices.shared=false
.
Configuration
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Configuration property |
Type |
Default |
---|---|---|
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 Minio container when running in Dev or Test mode. |
boolean |
true |
The container image name to use, for container based DevServices providers. |
String |
|
Indicates if the Minio 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 Minio starts a new container.
The discovery uses the |
boolean |
|
The value of the |
String |
|
Minio root username access key. |
String |
|
Minio root username secret key. |
String |
|