---
title: Connect Quarkus (Reactive) to Neon
subtitle: Learn how to connect to Neon from Quarkus using a Reactive SQL Client
enableTableOfContents: true
updatedOn: '2025-10-24T12:48:41.462Z'
---
[Quarkus](https://quarkus.io/) 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.
1. Navigate to the [Projects](https://console.neon.tech/app/projects) page in the Neon Console.
2. Click **New Project**.
3. Specify your project settings and click **Create Project**.
## Create a Quarkus project
Create a Quarkus project using the [Quarkus CLI](https://quarkus.io/guides/cli-tooling):
```shell
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.
## Configure a PostgreSQL data source
Create a `.env` file 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:
```shell shouldWrap
QUARKUS_DATASOURCE_REACTIVE_URL=postgresql://[user]:[password]@[neon_hostname]/[dbname]?sslmode=require&channel_binding=require
```
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](/docs/connect/connect-from-any-app).
## 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 getVersion() {
return client.query("SELECT version()")
.execute()
.onItem().transformToMulti(this::extractVersion);
}
private Multi extractVersion(RowSet 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:
```shell
quarkus dev
```
Visit [localhost:8080/postgres/version](http://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
```