Quarkus is a Java framework optimized for cloud environments. This guide shows how to connect to Neon from a Quarkus project using a Reactive SQL Client.
To connect to Neon from a Quarkus application:
- Create a Neon project- If you do not have one already, create a Neon project. - Navigate to the Projects page in the Neon Console.
- Click New Project.
- Specify your project settings and click Create Project.
 
- Create a Quarkus project- Create a Quarkus project using the Quarkus CLI: - quarkus create app neon-with-quarkus \ --name neon-with-quarkus \ --package-name com.neon.tech \ --extensions reactive-pg-client,resteasy-reactive- You now have a Quarkus project in a folder named - neon-with-quarkuswith the Reactive Postgres client and RESTEasy Reactive extensions installed.
- Configure a PostgreSQL data source- Create a - .envfile in the root of your Quarkus project directory. Configure a reactive data source using your Neon database connection string and specifying the database kind as shown:- # Note that "?sslmode=require&channel_binding=require" is appended to the Neon connection string QUARKUS_DATASOURCE_REACTIVE_URL=postgresql://[user]:[password]@[neon_hostname]/[dbname]?sslmode=require&channel_binding=require- note- You can find the connection details for your database by clicking the Connect button on your Project Dashboard. For more information, see Connect from any application. 
- Use the Reactive PostgreSQL client- Create a - PostgresResource.javafile in the same directory as the- GreetingResource.javathat was generated by Quarkus during project creation. Paste the following content into the- PostgresResource.javafile:- package com.neon.tech; import jakarta.inject.Inject; import io.smallrye.mutiny.Multi; import io.vertx.mutiny.sqlclient.Row; import io.vertx.mutiny.sqlclient.RowSet; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @Path("/postgres") public class PostgresResource { @Inject io.vertx.mutiny.pgclient.PgPool client; @GET @Path("/version") @Produces(MediaType.TEXT_PLAIN) public Multi<String> getVersion() { return client.query("SELECT version()") .execute() .onItem().transformToMulti(this::extractVersion); } private Multi<String> extractVersion(RowSet<Row> rowSet) { return Multi.createFrom().iterable(rowSet) .map(r -> r.getValue(0).toString()); } }- This code defines a HTTP endpoint that will query the database version and return it as a response to incoming requests. 
- Run the application- Start the application in development mode using the Quarkus CLI from the root of the project directory: - quarkus dev- Visit localhost:8080/postgres/version in your web browser. Your Neon database's Postgres version will be returned. For example: - PostgreSQL 15.4 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.