我可以在Google App Engine上使用HikariCP吗

我可以在Google App Engine上使用HikariCP吗,第1张

我可以在Google App Engine上使用HikariCP吗

是的,我已经在Google App Engine上实现了HikariCP,但是有一些注意事项。

Google App Engine使用三种类型实例类;

  • 自动缩放
  • 基本缩放
  • 手动缩放

只有基本和手动缩放类型允许背景线程,因此是与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管理扩展。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5498515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存