Skip to main content
Neon Postgres Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Connect Quarkus (Reactive) to Neon

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 a Lakebase Postgres database fro...

Pre-built prompt for connecting Quarkus applications to Lakebase Postgres using Reactive SQL Client

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 a Lakebase Postgres database from a Quarkus application:

  1. Create a Neon project

    If you do not have one already, create a Neon project.

    1. Navigate to the Projects page in the Neon Console.
    2. Click New Project.
    3. Specify your project settings and click Create Project.
  2. Create a Quarkus project

    Create a Quarkus project using the Quarkus CLI:

    Bash
    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-quarkus with the Reactive Postgres client and RESTEasy Reactive extensions installed.

  3. Configure a PostgreSQL data source

    Create a .env file in the root of your Quarkus project directory. Configure a reactive data source using your database connection string and specifying the database kind as shown:

    Bash
    QUARKUS_DATASOURCE_REACTIVE_URL=postgresql://[user]:[password]@[neon_hostname]/[dbname]?sslmode=require&channel_binding=require
  4. Use the Reactive PostgreSQL client

    Create a PostgresResource.java file in the same directory as the GreetingResource.java that was generated by Quarkus during project creation. Paste the following content into the PostgresResource.java file:

    Java
    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.

  5. Run the application

    Start the application in development mode using the Quarkus CLI from the root of the project directory:

    Bash
    quarkus dev

    Visit localhost:8080/postgres/version in your web browser. Your Neon database's Postgres version will be returned. For example:

    PostgreSQL 17.5 (6bc9ef8) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit

Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu