diff --git a/servers/boe-server-all/src/main/java/com/xboe/config/ThreadPoolConfig.java b/servers/boe-server-all/src/main/java/com/xboe/config/ThreadPoolConfig.java index a7a26eca..4fa37ae8 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/config/ThreadPoolConfig.java +++ b/servers/boe-server-all/src/main/java/com/xboe/config/ThreadPoolConfig.java @@ -1,6 +1,8 @@ package com.xboe.config; import lombok.extern.slf4j.Slf4j; +import okhttp3.Dispatcher; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -44,4 +46,27 @@ public class ThreadPoolConfig { executor.getQueueCapacity()); return executor; } + + /** + * event-stream线程池 + * @return + */ + @Bean(name = "eventStreamExecutor") + public ThreadPoolTaskExecutor eventStreamExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(10); + executor.setMaxPoolSize(500); + executor.setQueueCapacity(10); + executor.setThreadNamePrefix("event-stream-"); + executor.setKeepAliveSeconds(300); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + executor.setWaitForTasksToCompleteOnShutdown(true); + executor.initialize(); + return executor; + } + + @Bean(name = "customDispatcher") + public Dispatcher customDispatcher(@Qualifier("eventStreamExecutor") ThreadPoolTaskExecutor eventStreamExecutor) { + return new Dispatcher(eventStreamExecutor.getThreadPoolExecutor()); + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseAiChatServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseAiChatServiceImpl.java index 440a29d2..4b22041e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseAiChatServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseAiChatServiceImpl.java @@ -45,6 +45,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -67,6 +68,10 @@ public class CaseAiChatServiceImpl implements ICaseAiChatService { @Autowired private CaseAiProperties caseAiProperties; + @Autowired + @Qualifier("customDispatcher") + private Dispatcher dispatcher; + @Autowired private IAiAccessTokenService aiAccessTokenService; @@ -219,6 +224,8 @@ public class CaseAiChatServiceImpl implements ICaseAiChatService { .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(600, TimeUnit.SECONDS) .readTimeout(600, TimeUnit.SECONDS) + .callTimeout(600, TimeUnit.SECONDS) + .dispatcher(dispatcher) .build(); EventSource.Factory factory = EventSources.createFactory(client); factory.newEventSource(request, listener); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ElasticSearchIndexServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ElasticSearchIndexServiceImpl.java index 9092ebe6..9b5b38e9 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ElasticSearchIndexServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/ElasticSearchIndexServiceImpl.java @@ -115,14 +115,6 @@ public class ElasticSearchIndexServiceImpl implements IElasticSearchIndexService " \"type\": \"keyword\",\n" + " \"index\": true\n" + " },\n" + - " \"messageId\": {\n" + - " \"type\": \"keyword\",\n" + - " \"index\": true\n" + - " },\n" + - " \"messageType\": {\n" + - " \"type\": \"keyword\",\n" + - " \"index\": true\n" + - " },\n" + " \"query\": {\n" + " \"type\": \"text\",\n" + " \"analyzer\": \"ik_max_word\",\n" + @@ -176,21 +168,9 @@ public class ElasticSearchIndexServiceImpl implements IElasticSearchIndexService " \"type\": \"keyword\",\n" + " \"index\": true\n" + " },\n" + - " \"userName\": {\n" + - " \"type\": \"keyword\",\n" + - " \"index\": true\n" + - " },\n" + " \"timestamp\": {\n" + " \"type\": \"date\",\n" + - " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'||epoch_millis\"\n" + - " },\n" + - " \"createTime\": {\n" + - " \"type\": \"date\",\n" + - " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'||epoch_millis\"\n" + - " },\n" + - " \"updateTime\": {\n" + - " \"type\": \"date\",\n" + - " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'||epoch_millis\"\n" + + " \"format\": \"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'||epoch_millis\"\n" + " }\n" + " }\n" + "}";