Skip to content

Instantly share code, notes, and snippets.

@mafei-dev
Last active August 18, 2022 12:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mafei-dev/dda8a5956a11bcf45cfbcfb7b36a0433 to your computer and use it in GitHub Desktop.
Save mafei-dev/dda8a5956a11bcf45cfbcfb7b36a0433 to your computer and use it in GitHub Desktop.
How to configure Spring boot reactive r2dbc Mysql Multiple connection with connection-pool
package org.mono.stacksaga.security.adapter.cloud;
import io.r2dbc.pool.ConnectionPool;
import io.r2dbc.pool.ConnectionPoolConfiguration;
import io.r2dbc.spi.ConnectionFactories;
import io.r2dbc.spi.ConnectionFactory;
import io.r2dbc.spi.ConnectionFactoryOptions;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
import org.springframework.data.r2dbc.dialect.MySqlDialect;
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
import org.springframework.r2dbc.core.DatabaseClient;
import java.time.Duration;
@Configuration
@EnableR2dbcRepositories(
basePackages = "com.demo.newconnection.repositories",
entityOperationsRef = "newMysqlR2dbcEntityOperations"
)
public class MySQLPoolConfiguration {
@Bean("newMysqlPool")
public ConnectionPool mysqlConnectionFactory() {
ConnectionFactory connectionFactory = ConnectionFactories.get(
ConnectionFactoryOptions.builder()
.option(ConnectionFactoryOptions.HOST, "localhost")
.option(ConnectionFactoryOptions.PORT, 3306)
.option(ConnectionFactoryOptions.DATABASE, "r2dbc")
.option(ConnectionFactoryOptions.USER, "root")
.option(ConnectionFactoryOptions.PASSWORD, "mafei")
.option(ConnectionFactoryOptions.DRIVER, "mysql")
.build()
);
ConnectionPoolConfiguration poolConfiguration = ConnectionPoolConfiguration.builder(connectionFactory)
.maxIdleTime(Duration.ofMillis(1000))
.maxSize(20)
.build();
return new ConnectionPool(poolConfiguration);
}
@Bean("newMysqlR2dbcEntityOperations")
public R2dbcEntityOperations mysqlR2dbcEntityOperations(@Qualifier("newMysqlPool") ConnectionPool connectionPool) {
DatabaseClient databaseClient = DatabaseClient.create(connectionPool);
return new R2dbcEntityTemplate(databaseClient, MySqlDialect.INSTANCE);
}
}
@mafei-dev
Copy link
Author

Just create Repositories on that given path and use it as uusual 🤷‍♂️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment