Commit 3b5011f6 authored by tangwei's avatar tangwei

增加redis 集群,es 分片

parent 3120e68a
...@@ -14,7 +14,7 @@ import org.springframework.data.elasticsearch.annotations.Mapping; ...@@ -14,7 +14,7 @@ import org.springframework.data.elasticsearch.annotations.Mapping;
* *
*/ */
@Data @Data
@Document(indexName = "org", type = "_doc", shards = 1, replicas = 0) @Document(indexName = "org", type = "_doc", shards = 3, replicas = 1)
public class ESOrgUsrDto { public class ESOrgUsrDto {
/**部门主键 */ /**部门主键 */
......
...@@ -21,7 +21,7 @@ import java.util.Date; ...@@ -21,7 +21,7 @@ import java.util.Date;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "jcs", type = "alertCalled", shards = 1, replicas = 0) @Document(indexName = "jcs", type = "alertCalled", shards = 3, replicas = 1)
public class ESAlertCalled { public class ESAlertCalled {
/** 主键 */ /** 主键 */
......
...@@ -16,7 +16,7 @@ import org.springframework.data.elasticsearch.annotations.FieldType; ...@@ -16,7 +16,7 @@ import org.springframework.data.elasticsearch.annotations.FieldType;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "jcs", type = "car", shards = 1, replicas = 0) @Document(indexName = "jcs", type = "car", shards = 3, replicas = 1)
public class ESCar { public class ESCar {
@Id @Id
private String id; private String id;
......
...@@ -13,7 +13,7 @@ import java.util.List; ...@@ -13,7 +13,7 @@ import java.util.List;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "knowledgebase", type = "doc", shards = 1, replicas = 0) @Document(indexName = "knowledgebase", type = "doc", shards = 3, replicas = 1)
public class ESDocEntity { public class ESDocEntity {
/** 主键 */ /** 主键 */
......
...@@ -10,7 +10,7 @@ import org.springframework.data.elasticsearch.annotations.Parent; ...@@ -10,7 +10,7 @@ import org.springframework.data.elasticsearch.annotations.Parent;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "knowledgebase",type = "tag", shards = 1, replicas = 0) @Document(indexName = "knowledgebase",type = "tag", shards = 3, replicas = 1)
public class ESTagEntity { public class ESTagEntity {
/** 主键 */ /** 主键 */
......
package com.yeejoin.equipmanage.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -36,11 +36,26 @@ public class ElasticSearchClientConfig { ...@@ -36,11 +36,26 @@ public class ElasticSearchClientConfig {
credentialsProvider.setCredentials(AuthScope.ANY, credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password)); new UsernamePasswordCredentials(username, password));
try {
String url = uris.replace("http://", ""); String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":"); String[] urls= url.split(",");
HttpHost[] httpHosts = new HttpHost[urls.length];
try {
// String url = uris.replace("http://", "");
// final String[] parts = StringUtils.split(url, ":");
// HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
// RestClientBuilder builder = RestClient.builder(httpHost);
for (int i = 0; i < urls.length; i++) {
final String[] parts = StringUtils.split(urls[i], ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http"); HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost); httpHosts[i]=httpHost;
}
RestClientBuilder builder = RestClient.builder(httpHosts);
builder.setHttpClientConfigCallback(httpClientBuilder -> { builder.setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.disableAuthCaching(); httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
......
package com.yeejoin.amos.boot.module.jcs.biz.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -34,11 +34,27 @@ public class ElasticSearchClientConfig { ...@@ -34,11 +34,27 @@ public class ElasticSearchClientConfig {
credentialsProvider.setCredentials(AuthScope.ANY, credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password)); new UsernamePasswordCredentials(username, password));
try {
String url = uris.replace("http://", ""); String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":"); String[] urls= url.split(",");
HttpHost[] httpHosts = new HttpHost[urls.length];
try {
// String url = uris.replace("http://", "");
// final String[] parts = StringUtils.split(url, ":");
// HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
// RestClientBuilder builder = RestClient.builder(httpHost);
for (int i = 0; i < urls.length; i++) {
final String[] parts = StringUtils.split(urls[i], ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http"); HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost); httpHosts[i]=httpHost;
}
RestClientBuilder builder = RestClient.builder(httpHosts);
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override @Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
......
package com.yeejoin.amos.knowledgebase.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -113,6 +113,11 @@ ...@@ -113,6 +113,11 @@
<groupId>org.liquibase</groupId> <groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId> <artifactId>liquibase-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yeejoin.amos.latentdanger.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -118,6 +118,11 @@ ...@@ -118,6 +118,11 @@
<groupId>cn.jpush.api</groupId> <groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId> <artifactId>jpush-client</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yeejoin.amos.maintenance.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -108,6 +108,11 @@ ...@@ -108,6 +108,11 @@
<groupId>org.liquibase</groupId> <groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId> <artifactId>liquibase-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yeejoin.amos.patrol.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -163,5 +163,10 @@ ...@@ -163,5 +163,10 @@
<artifactId>poi</artifactId> <artifactId>poi</artifactId>
<version>4.0.1</version> <version>4.0.1</version>
</dependency> </dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yeejoin.amos.supervision.config;
import com.yeejoin.amos.boot.biz.config.RedisConfigProperties;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import java.time.Duration;
@Configuration
public class RedisClusterConfig {
@Autowired
private RedisConfigProperties redisConfigProperties;
@Bean
@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
public RedisConnectionFactory redisConnectionFactory() {
// 开启自适应集群拓扑刷新和周期拓扑刷新,不开启相应槽位主节点挂掉会出现服务不可用,直到挂掉节点重新恢复
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
.adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //自适应刷新超时时间(默认30秒),默认关闭开启后时间为30秒
.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
.build();
ClientOptions clientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions)
.build();
// 客户端读写分离配置
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(clientOptions)
.build();
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(
redisConfigProperties.getCluster().getNodes());
return new LettuceConnectionFactory(redisClusterConfiguration, clientConfig);
}
}
...@@ -16,13 +16,14 @@ spring.redis.password=1234560 ...@@ -16,13 +16,14 @@ spring.redis.password=1234560
## ES properties: ## ES properties:
biz.elasticsearch.address=172.16.11.201 spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-name=elasticsearch spring.elasticsearch.rest.uris=http://127.0.0.1:9201,http://127.0.0.1:9202,http://127.0.0.1:9203
spring.data.elasticsearch.cluster-nodes=${biz.elasticsearch.address}:9300 spring.data.elasticsearch.client.reactive.connection-timeout=3000
spring.elasticsearch.rest.uris=http://${biz.elasticsearch.address}:9200 spring.data.elasticsearch.client.reactive.socket-timeout=3000
elasticsearch.username= elastic elasticsearch.username= elastic
elasticsearch.password= 123456 elasticsearch.password= 123456
## emqx properties: ## emqx properties:
emqx.clean-session=true emqx.clean-session=true
emqx.client-id=${spring.application.name}-${random.int[1024,65536]} emqx.client-id=${spring.application.name}-${random.int[1024,65536]}
......
...@@ -38,9 +38,13 @@ eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port} ...@@ -38,9 +38,13 @@ eureka.instance.metadata-map.management.api-docs=http://localhost:${server.port}
#ES #ES
spring.data.elasticsearch.cluster-name=elasticsearch spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=39.100.239.237:9300 spring.elasticsearch.rest.uris=http://127.0.0.1:9201,http://127.0.0.1:9202,http://127.0.0.1:9203
spring.elasticsearch.rest.uris=http://39.100.239.237:9200 spring.data.elasticsearch.client.reactive.connection-timeout=3000
spring.data.elasticsearch.client.reactive.socket-timeout=3000
elasticsearch.username= elastic
elasticsearch.password= 123456
#emqx v4.0 #emqx v4.0
...@@ -74,5 +78,3 @@ amos.feign.gennerator.feign-dir=C:/Users/Administrator/IdeaProjects/knowledge-ba ...@@ -74,5 +78,3 @@ amos.feign.gennerator.feign-dir=C:/Users/Administrator/IdeaProjects/knowledge-ba
file.url=http://39.98.45.134:9000/ file.url=http://39.98.45.134:9000/
elasticsearch.username= elastic
elasticsearch.password= 123456
\ No newline at end of file
...@@ -22,7 +22,7 @@ import java.util.Date; ...@@ -22,7 +22,7 @@ import java.util.Date;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "tzs", type = "tzsAlertCalled", shards = 1, replicas = 0) @Document(indexName = "tzs", type = "tzsAlertCalled", shards = 3, replicas = 1)
public class ESAlertCalled { public class ESAlertCalled {
/** 主键 */ /** 主键 */
......
...@@ -15,7 +15,7 @@ import org.springframework.data.elasticsearch.annotations.GeoPointField; ...@@ -15,7 +15,7 @@ import org.springframework.data.elasticsearch.annotations.GeoPointField;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "cylinder", replicas = 0) @Document(indexName = "cylinder", shards = 3, replicas = 1)
public class EsCylinder { public class EsCylinder {
/** /**
......
...@@ -15,7 +15,7 @@ import org.springframework.data.elasticsearch.annotations.GeoPointField; ...@@ -15,7 +15,7 @@ import org.springframework.data.elasticsearch.annotations.GeoPointField;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "elev", type = "tzsElevator", shards = 1, replicas = 0) @Document(indexName = "elev", type = "tzsElevator", shards = 3, replicas = 1)
public class EsElevator { public class EsElevator {
......
...@@ -34,11 +34,27 @@ public class ElasticSearchClientConfig { ...@@ -34,11 +34,27 @@ public class ElasticSearchClientConfig {
credentialsProvider.setCredentials(AuthScope.ANY, credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password)); new UsernamePasswordCredentials(username, password));
try {
String url = uris.replace("http://", ""); String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":"); String[] urls= url.split(",");
HttpHost[] httpHosts = new HttpHost[urls.length];
try {
// String url = uris.replace("http://", "");
// final String[] parts = StringUtils.split(url, ":");
// HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
// RestClientBuilder builder = RestClient.builder(httpHost);
for (int i = 0; i < urls.length; i++) {
final String[] parts = StringUtils.split(urls[i], ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http"); HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost); httpHosts[i]=httpHost;
}
RestClientBuilder builder = RestClient.builder(httpHosts);
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override @Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
...@@ -46,6 +62,7 @@ public class ElasticSearchClientConfig { ...@@ -46,6 +62,7 @@ public class ElasticSearchClientConfig {
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
} }
}); });
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
// 该方法接收一个RequestConfig.Builder对象,对该对象进行修改后然后返回。 // 该方法接收一个RequestConfig.Builder对象,对该对象进行修改后然后返回。
@Override @Override
......
...@@ -33,7 +33,7 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -33,7 +33,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@EnableFeignClients @EnableFeignClients
@EnableAsync @EnableAsync
@EnableEurekaClient @EnableEurekaClient
@ComponentScan({"com.yeejoin.amos"}) @ComponentScan({"com.yeejoin.amos","springfox.documentation.schema"})
public class JpushApplication { public class JpushApplication {
private static final Logger logger = LoggerFactory.getLogger(JpushApplication.class); private static final Logger logger = LoggerFactory.getLogger(JpushApplication.class);
......
package com.yeejoin.amos.jpush.config; package com.yeejoin.amos.jpush.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
...@@ -24,5 +25,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -24,5 +25,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.anyRequest().authenticated().and() .anyRequest().authenticated().and()
.formLogin(); .formLogin();
} }
@Bean
public HttpFirewall httpFirewall() {
return new DefaultHttpFirewall();
}
} }
...@@ -34,11 +34,26 @@ public class ElasticSearchClientConfig { ...@@ -34,11 +34,26 @@ public class ElasticSearchClientConfig {
@Qualifier("highLevelClient") @Qualifier("highLevelClient")
public RestHighLevelClient restHighLevelClient() { public RestHighLevelClient restHighLevelClient() {
try {
String url = uris.replace("http://", ""); String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":"); String[] urls= url.split(",");
HttpHost[] httpHosts = new HttpHost[urls.length];
try {
// String url = uris.replace("http://", "");
// final String[] parts = StringUtils.split(url, ":");
// HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
// RestClientBuilder builder = RestClient.builder(httpHost);
for (int i = 0; i < urls.length; i++) {
final String[] parts = StringUtils.split(urls[i], ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http"); HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost); httpHosts[i]=httpHost;
}
RestClientBuilder builder = RestClient.builder(httpHosts);
//增加安全配置,使用kibana,勿删 //增加安全配置,使用kibana,勿删
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, credentialsProvider.setCredentials(AuthScope.ANY,
......
...@@ -16,7 +16,7 @@ import lombok.experimental.Accessors; ...@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(indexName = "video", type = "videoOriginal", shards = 1, replicas = 0) @Document(indexName = "video", type = "videoOriginal", shards = 3, replicas = 1)
public class EsVideoOriginal { public class EsVideoOriginal {
/** 主键 */ /** 主键 */
@Id @Id
......
...@@ -12,13 +12,14 @@ spring.redis.host=172.16.10.85 ...@@ -12,13 +12,14 @@ spring.redis.host=172.16.10.85
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password=amos2019Redis spring.redis.password=amos2019Redis
## ES properties: ## ES properties:
biz.elasticsearch.address=172.16.10.66 spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-name=elasticsearch spring.elasticsearch.rest.uris=http://127.0.0.1:9201,http://127.0.0.1:9202,http://127.0.0.1:9203
spring.data.elasticsearch.cluster-nodes=${biz.elasticsearch.address}:9300 spring.data.elasticsearch.client.reactive.connection-timeout=3000
spring.elasticsearch.rest.uris=http://${biz.elasticsearch.address}:9200 spring.data.elasticsearch.client.reactive.socket-timeout=3000
elasticsearch.username= elastic elasticsearch.username= elastic
elasticsearch.password= 123456 elasticsearch.password= 123456
##biz custem properties ##biz custem properties
biz.hk.video.url=http://11.11.16.12:9017/artemis-web/debug biz.hk.video.url=http://11.11.16.12:9017/artemis-web/debug
biz.hk.video.APPkey=25907430 biz.hk.video.APPkey=25907430
......
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<dependency> <dependency>
<groupId>org.redisson</groupId> <groupId>org.redisson</groupId>
<artifactId>redisson</artifactId> <artifactId>redisson</artifactId>
<version>3.8.2</version> <version>3.16.1</version>
</dependency> </dependency>
<dependency> <dependency>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment