elastic-data-test

DbModule.java 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.vcarecity.test.module;
  2. import com.google.inject.AbstractModule;
  3. import com.google.inject.Inject;
  4. import com.google.inject.Provides;
  5. import com.google.inject.Singleton;
  6. import com.vcarecity.test.properties.ConfigProperties;
  7. import com.vcarecity.test.properties.DbProperties;
  8. import com.vcarecity.test.properties.ElasticProperties;
  9. import com.zaxxer.hikari.HikariConfig;
  10. import com.zaxxer.hikari.HikariDataSource;
  11. import org.apache.http.HttpHost;
  12. import org.apache.http.auth.AuthScope;
  13. import org.apache.http.auth.Credentials;
  14. import org.apache.http.auth.UsernamePasswordCredentials;
  15. import org.apache.http.client.CredentialsProvider;
  16. import org.apache.http.impl.client.BasicCredentialsProvider;
  17. import org.elasticsearch.client.RestClient;
  18. import org.elasticsearch.client.RestClientBuilder;
  19. import org.elasticsearch.client.RestHighLevelClient;
  20. import javax.sql.DataSource;
  21. import java.io.IOException;
  22. /**
  23. * @author Kerry on 19/12/09
  24. */
  25. public class DbModule extends AbstractModule {
  26. @Override
  27. protected void configure() {
  28. // bind(DataSource.class).to(HikariDataSource.class);
  29. }
  30. @Provides
  31. @Inject
  32. @Singleton
  33. public DataSource dataSource(ConfigProperties configProperties) {
  34. final DbProperties database = configProperties.getDatabase();
  35. HikariConfig config = new HikariConfig();
  36. config.setJdbcUrl(database.getUrl());
  37. config.setUsername(database.getUser());
  38. config.setPassword(database.getPassword());
  39. //config.addDataSourceProperty("cachePrepStmts", "true");
  40. //config.addDataSourceProperty("prepStmtCacheSize", "250");
  41. //config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
  42. //config.addDataSourceProperty("useServerPrepStmts", "true");
  43. //config.addDataSourceProperty("useLocalSessionState", "true");
  44. //config.addDataSourceProperty("rewriteBatchedStatements", "true");
  45. //config.addDataSourceProperty("cacheResultSetMetadata", "true");
  46. //config.addDataSourceProperty("cacheServerConfiguration", "true");
  47. //config.addDataSourceProperty("elideSetAutoCommits", "true");
  48. //config.addDataSourceProperty("maintainTimeStats", "false");
  49. config.setMaximumPoolSize(2);
  50. config.setMinimumIdle(1);
  51. final HikariDataSource hikariDataSource = new HikariDataSource(config);
  52. Runtime.getRuntime().addShutdownHook(new Thread(hikariDataSource::close));
  53. return hikariDataSource;
  54. }
  55. @Provides
  56. @Inject
  57. @Singleton
  58. public RestHighLevelClient restHighLevelClient(ConfigProperties configProperties) {
  59. final ElasticProperties elastic = configProperties.getElasticsearch();
  60. final String[] split = elastic.getHost().split(",");
  61. HttpHost[] hosts = new HttpHost[split.length];
  62. for (int i = 0; i < hosts.length; i++) {
  63. final String[] address = split[i].split(":");
  64. if (address.length > 1) {
  65. hosts[i] = new HttpHost(address[0], Integer.parseInt(address[1]));
  66. } else {
  67. hosts[i] = new HttpHost(address[0], 9200);
  68. }
  69. }
  70. final RestClientBuilder builder = RestClient.builder(hosts);
  71. CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
  72. Credentials credentials = new UsernamePasswordCredentials(elastic.getUser(), elastic.getPassword());
  73. credentialsProvider.setCredentials(AuthScope.ANY, credentials);
  74. builder.setHttpClientConfigCallback(http -> {
  75. http.setDefaultCredentialsProvider(credentialsProvider);
  76. return http;
  77. });
  78. final RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
  79. Runtime.getRuntime().addShutdownHook(new Thread(() -> {
  80. try {
  81. restHighLevelClient.close();
  82. } catch (IOException e) {
  83. e.printStackTrace();
  84. }
  85. }));
  86. return restHighLevelClient;
  87. }
  88. }