diff --git a/auth-center/auth-center-bootstrap/src/main/resources/application.yml b/auth-center/auth-center-bootstrap/src/main/resources/application.yml index 0c15a5eb..1b250b5f 100644 --- a/auth-center/auth-center-bootstrap/src/main/resources/application.yml +++ b/auth-center/auth-center-bootstrap/src/main/resources/application.yml @@ -52,6 +52,8 @@ spring: logging: config: classpath:logback-configuration/logback-${spring.profiles.active}.xml + level: + org.springframework.data.elasticsearch.client.WIRE: DEBUG maf: project-properties: diff --git a/auth-center/pom.xml b/auth-center/pom.xml index 4d07f365..fc6f1755 100644 --- a/auth-center/pom.xml +++ b/auth-center/pom.xml @@ -75,6 +75,10 @@ org.springframework.boot spring-boot-starter-data-redis + + org.springframework.boot + spring-boot-starter-data-elasticsearch + org.springframework.boot spring-boot-starter-amqp diff --git a/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml b/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml index adf1936d..d622d4e2 100644 --- a/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml +++ b/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml @@ -92,6 +92,11 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 + elasticsearch: + uris: + - http://maf-elasticsearch:9200 + username: elastic + password: maf@elasticsearch quartz: job-store-type: JDBC jdbc: diff --git a/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml b/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml index 8d898649..349e0b58 100644 --- a/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml +++ b/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml @@ -92,6 +92,11 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 + elasticsearch: + uris: + - http://localhost:9200 + username: elastic + password: maf@elasticsearch quartz: job-store-type: JDBC jdbc: diff --git a/docker/configuration/micro-service-config-on-consul/application/application-production.yml b/docker/configuration/micro-service-config-on-consul/application/application-production.yml index eaced713..8426d6b0 100644 --- a/docker/configuration/micro-service-config-on-consul/application/application-production.yml +++ b/docker/configuration/micro-service-config-on-consul/application/application-production.yml @@ -92,6 +92,11 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 + elasticsearch: + uris: + - http://maf-elasticsearch:9200 + username: elastic + password: maf@elasticsearch quartz: job-store-type: JDBC jdbc: diff --git a/docker/configuration/micro-service-config-on-consul/application/application-stage.yml b/docker/configuration/micro-service-config-on-consul/application/application-stage.yml index eaced713..8426d6b0 100644 --- a/docker/configuration/micro-service-config-on-consul/application/application-stage.yml +++ b/docker/configuration/micro-service-config-on-consul/application/application-stage.yml @@ -92,6 +92,11 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 + elasticsearch: + uris: + - http://maf-elasticsearch:9200 + username: elastic + password: maf@elasticsearch quartz: job-store-type: JDBC jdbc: diff --git a/docker/configuration/micro-service-config-on-consul/application/application-test.yml b/docker/configuration/micro-service-config-on-consul/application/application-test.yml index adf1936d..d622d4e2 100644 --- a/docker/configuration/micro-service-config-on-consul/application/application-test.yml +++ b/docker/configuration/micro-service-config-on-consul/application/application-test.yml @@ -92,6 +92,11 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 + elasticsearch: + uris: + - http://maf-elasticsearch:9200 + username: elastic + password: maf@elasticsearch quartz: job-store-type: JDBC jdbc: diff --git a/maf-mis/pom.xml b/maf-mis/pom.xml index 3632affc..e94174eb 100644 --- a/maf-mis/pom.xml +++ b/maf-mis/pom.xml @@ -75,6 +75,10 @@ org.springframework.boot spring-boot-starter-data-redis + + org.springframework.boot + spring-boot-starter-data-elasticsearch + org.springframework.boot spring-boot-starter-amqp diff --git a/spring-cloud-starter/pom.xml b/spring-cloud-starter/pom.xml index 67c3b381..1c9473f6 100644 --- a/spring-cloud-starter/pom.xml +++ b/spring-cloud-starter/pom.xml @@ -42,6 +42,11 @@ spring-boot-starter-data-redis provided + + org.springframework.boot + spring-boot-starter-data-elasticsearch + provided + org.springframework.boot spring-boot-starter-amqp diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java index 035af8a4..a044becf 100644 --- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java @@ -11,6 +11,7 @@ import com.jmsoftware.maf.springcloudstarter.controller.HttpApiResourceRemoteApiController; import com.jmsoftware.maf.springcloudstarter.controller.RedirectController; import com.jmsoftware.maf.springcloudstarter.database.MyBatisPlusConfiguration; +import com.jmsoftware.maf.springcloudstarter.elasticsearch.ElasticsearchConfiguration; import com.jmsoftware.maf.springcloudstarter.filter.AccessLogFilter; import com.jmsoftware.maf.springcloudstarter.helper.HttpApiScanHelper; import com.jmsoftware.maf.springcloudstarter.helper.IpHelper; @@ -66,6 +67,7 @@ WebMvcConfiguration.class, MyBatisPlusConfiguration.class, RedisConfiguration.class, + ElasticsearchConfiguration.class, WebSecurityConfiguration.class, RestTemplateConfiguration.class, AsyncConfiguration.class, diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java index d723b5f2..32310426 100644 --- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java @@ -2,15 +2,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.core.task.AsyncTaskExecutor; -import org.springframework.scheduling.annotation.AsyncConfigurer; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.context.request.async.CallableProcessingInterceptor; import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import java.util.Objects; - import static org.springframework.web.cors.CorsConfiguration.ALL; /** @@ -29,7 +26,7 @@ public class WebMvcConfiguration implements WebMvcConfigurer { * can be cached by clients. By default this is set to 1800 seconds (30 minutes). */ private static final long MAX_AGE_SECS = 3600; - private final AsyncConfigurer asyncConfigurer; + private final ThreadPoolTaskExecutor threadPoolTaskExecutor; private final CallableProcessingInterceptor callableProcessingInterceptor; /** @@ -52,7 +49,7 @@ public void addCorsMappings(CorsRegistry registry) { @Override public void configureAsyncSupport(AsyncSupportConfigurer configurer) { configurer.setDefaultTimeout(360000) - .setTaskExecutor((AsyncTaskExecutor) Objects.requireNonNull(this.asyncConfigurer.getAsyncExecutor())) + .setTaskExecutor(threadPoolTaskExecutor) .registerCallableInterceptors(this.callableProcessingInterceptor); } } diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java new file mode 100644 index 00000000..4c269d46 --- /dev/null +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java @@ -0,0 +1,44 @@ +package com.jmsoftware.maf.springcloudstarter.elasticsearch; + +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; + +import java.time.LocalDateTime; + +/** + * Description: Book, change description here. + * + * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/20/2022 1:40 PM + */ +@Data +@Document(indexName = "books") +public class Book { + /** + * The Id. + */ + @Id + private String id; + /** + * The Title. + */ + @Field(type = FieldType.Text, name = "name") + private String name; + /** + * The Summary. + */ + @Field(type = FieldType.Text) + private String summary; + /** + * The Publishing date. + */ + @Field(type = FieldType.Date, name = "publishDate", format = {}, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'") + private LocalDateTime publishingDate; + /** + * The Price. + */ + @Field(type = FieldType.Double, name = "price") + private double price; +} diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java new file mode 100644 index 00000000..1cac30d4 --- /dev/null +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java @@ -0,0 +1,34 @@ +package com.jmsoftware.maf.springcloudstarter.elasticsearch; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.elasticsearch.annotations.Query; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +import java.util.List; + +/** + * Description: BookRepository, change description here. + * + * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/20/2022 2:06 PM + **/ +public interface BookRepository extends ElasticsearchRepository { + /** + * Find by name and price list. + * + * @param name the name + * @param price the price + * @return the list + */ + List findByNameAndPrice(String name, Integer price); + + /** + * Find by name page. + * + * @param name the name + * @param pageable the pageable + * @return the page + */ + @Query("{\"match\": {\"name\": {\"query\": \"?0\"}}}") + Page findByName(String name, Pageable pageable); +} diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java new file mode 100644 index 00000000..93b0b952 --- /dev/null +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java @@ -0,0 +1,33 @@ +package com.jmsoftware.maf.springcloudstarter.elasticsearch; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchProperties; +import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; + +import javax.annotation.PostConstruct; + +/** + * Description: ElasticsearchConfiguration, change description here. + * + * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/19/2022 11:38 PM + * @see + * Spring Data Elasticsearch - Reference Documentation + * @see + * Client Logging + **/ +@Slf4j +@RequiredArgsConstructor +@EnableElasticsearchRepositories +@ConditionalOnClass({AbstractElasticsearchConfiguration.class, RestHighLevelClient.class}) +public class ElasticsearchConfiguration { + private final ElasticsearchProperties elasticsearchProperties; + + @PostConstruct + public void init() { + log.warn("ElasticsearchConfiguration init. URIs: {}", elasticsearchProperties.getUris()); + } +}