Integrates Couchbase into Quarkus.
This extension is currently in beta status. It supports:
Cluster
.application.properties
. Currently, a minimal set of configuration options is provided.Please try it out and provide feedback, ideas and bug reports on Github.
[!IMPORTANT] While the extension compiles natively, there are known issues with the produced runner which we are actively working to resolve.
Add it to your project:
<dependency>
<groupId>io.quarkiverse.couchbase</groupId>
<artifactId>quarkus-couchbase</artifactId>
<version>1.0.0.Beta2</version>
</dependency>
Provide the Couchbase configuration in application.properties
:
quarkus.couchbase.connection-string=localhost
quarkus.couchbase.username=username
quarkus.couchbase.password=password
To disable TestContainers, add:
quarkus.devservices.enabled=false
Now you can @Inject a Couchbase Cluster
into your project:
@Path("/couchbase")
public class TestCouchbaseResource {
@Inject
Cluster cluster;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/test")
public String run() {
// Get a reference to a particular Couchbase bucket and its default collection
var bucket = cluster.bucket("travel-sample");
var collection = bucket.defaultCollection() ;
// Upsert a new document
collection.upsert("test", JsonObject.create().put("foo", "bar"));
// Fetch and print a document
var doc = bucket.defaultCollection().get("test");
System.out.println("Got doc " + doc.contentAsObject().toString());
// Perform a N1QL query
var queryResult = cluster.query("select * from `travel-sample` where url like 'http://marriot%' and country = 'United States';");
queryResult.rowsAsObject().forEach(row -> {
System.out.println(row.toString());
});
return "success!";
}
}
And test http://localhost:8080/couchbase/test.
In this a beta release the configuration options are limited to the three shown above.
This means that a Couchbase cluster configured securely and requiring TLS or a client or server certificate, cannot currently be connected to.
All the files under nettyhandling
directories, both in the runtime
and deployment
modules are
taken as-were or modified from the official netty extension.
Couchbase does not intend copyright infringement or claim ownership over these files or their content.
Thanks goes to these wonderful people (emoji key):
Graham Pople 💻 🚧 |
Emilien Bevierre 💻 🚧 |
This project follows the all-contributors specification. Contributions of any kind welcome!