1

I am trying to connect quarkus reactive datasource using (Google Cloud SQLproxy). You are able to run the cloud_sql_proxy as unix socket available connection.In this way:

./cloud_sql_proxy -dir=/tmp/cloudsql -instances=proyectA:europe-west1:cloudsql-sandbox-ephemeral -credential_file=../security/proyectA-credentials.json &
2020/06/30 12:39:27 Listening on /tmp/cloudsql/proyectA:europe-west1:cloudsql-sandbox-ephemeral/.s.PGSQL.5432 for proyectA:europe-west1:cloudsql-sandbox-ephemeral
2020/06/30 12:39:27 Ready for new connections

Then try to connect with this application.properties:

quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=postgres
quarkus.datasource.password=123456
quarkus.datasource.reactive.url=postgresql:///postgres?cloudSqlInstance=/tmp/cloudsql/proyectA:europe-west1:cloudsql-sandbox-ephemeral/.s.PGSQL.5432
quarkus.datasource.jdbc=false
quarkus.datasource.reactive=true

running the Quarkus APP, get the error: ion: Conexión refused: localhost/127.0.0.1:5432 Caused by: java.net.ConnectException: Conection refused

But, the message appears to try connect using TCP instead Unix socket. It is posible connect quarkus datasource via unix socket?

Java code is so simple

@Inject
private io.vertx.mutiny.pgclient.PgPool client;

(I can connect to cloud_sql_proxy using TCP without problems, but I need to configure unix socket to be able to deploy my quarkus app to cloud run with the cloud_sql_proxy)

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
danipenaperez
  • 583
  • 5
  • 12

1 Answers1

3

To connect using a UNIX domain socket, the Reactive Pg client needs Netty native support.

First add the native transport jars to your project:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport-native-epoll</artifactId>
    <classifier>linux-x86_64</classifier>
</dependency>

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport-native-kqueue</artifactId>
    <classifier>osx-x86_64</classifier>
</dependency>

Then enable native transport in the Quarkus config file:

quarkus.vertx.prefer-native-transport=true

Finally, fix the reactive db url:

quarkus.datasource.reactive.url=postgresql://:5432/postgres?host=/tmp/cloudsql/proyectA:europe-west1:cloudsql-sandbox-ephemeral
tsegismont
  • 8,591
  • 1
  • 17
  • 27