案例专家:es修改索引格式、添加event-stream专属线程池

This commit is contained in:
liu.zixi
2025-10-11 17:33:48 +08:00
parent c48c0a0f86
commit cb448a09a3
3 changed files with 33 additions and 21 deletions

View File

@@ -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());
}
}

View File

@@ -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);

View File

@@ -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" +
"}";