Last active
August 18, 2022 12:23
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just create Repositories on that given path and use it as uusual 🤷♂️