是的,我已经在Google App Engine上实现了HikariCP,但是有一些注意事项。
- 自动缩放
- 基本缩放
- 手动缩放
只有基本和手动缩放类型允许背景线程,因此是与HikariCP一起使用的唯一候选者。我使用了基本扩展,这对于大约已知的用户群(例如,每个部署的实例一个公司)来说是没有问题的。此类型启用其他一些不错的功能,例如会话支持和功能强大的B8实例(1024
MB / 4.8 GHz)。对于我的大多数应用程序,我更喜欢一个强大的初始化实例,而不是多个实例。
属性 threadFactory
仅可通过编程配置来使用,因此我实现了自己的连接提供程序;
public class MyConnectionProvider implements ConnectionProvider, Configurable, Stoppable{...public void configure(Map props) throws HibernateException { try { mHikariConfig = HikariConfigurationUtil.loadConfiguration(props); if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) { mHikariConfig.setDriverClassName("com.mysql.jdbc.GoogleDriver"); mHikariConfig.setJdbcUrl("jdbc:google:mysql://project-xxx:database/xxx"); mHikariConfig.setThreadFactory(ThreadManager.backgroundThreadFactory()); } else { mHikariConfig.setDriverClassName("com.mysql.jdbc.Driver"); mHikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/xxx"); } mHikariConfig.addDataSourceProperty("databaseName", "xxx"); mHikariConfig.setUsername("USERNAME"); mHikariConfig.setPassword("PASSWD"); mHikariConfig.setRegisterMbeans(false); mHikariConfig.setMaximumPoolSize(12); mHikariConfig.addDataSourceProperty("cachePrepStmts", "true"); mHikariConfig.addDataSourceProperty("useServerPrepStmts", "true"); mHikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); mHikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); mHikariDataSource = new HikariDataSource(mHikariConfig); } catch (Exception e) { throw new HibernateException(e); } }...}
数据库名称已经在JdbcUrl中,但是我不得不再次指定它。另一个重要的配置设置是
mHikariConfig.setRegisterMbeans(false);
这会禁用on App Engine的受限Java管理扩展。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)