From 605497b36dc5201d9ac82107b7c780bd49decd91 Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 11 Aug 2024 00:50:25 +0800 Subject: [PATCH] feat: PowerJobClient support shutdown #895 --- .../java/tech/powerjob/client/PowerJobClient.java | 10 ++++++++-- .../powerjob/client/service/RequestService.java | 4 +++- .../impl/ClusterRequestServiceOkHttp3Impl.java | 13 +++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/powerjob-client/src/main/java/tech/powerjob/client/PowerJobClient.java b/powerjob-client/src/main/java/tech/powerjob/client/PowerJobClient.java index 80c18695..f2e668ce 100644 --- a/powerjob-client/src/main/java/tech/powerjob/client/PowerJobClient.java +++ b/powerjob-client/src/main/java/tech/powerjob/client/PowerJobClient.java @@ -23,6 +23,8 @@ import tech.powerjob.common.serialize.JsonUtils; import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.common.utils.DigestUtils; +import java.io.Closeable; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -35,7 +37,7 @@ import static tech.powerjob.client.TypeStore.*; * @since 2020/4/15 */ @Slf4j -public class PowerJobClient implements IPowerJobClient { +public class PowerJobClient implements IPowerJobClient, Closeable { private Long appId; @@ -545,5 +547,9 @@ public class PowerJobClient implements IPowerJobClient { String post = requestService.request(OpenAPIConstant.FETCH_WORKFLOW_INSTANCE_INFO, PowerRequestBody.newFormRequestBody(param)); return JSON.parseObject(post, WF_INSTANCE_RESULT_TYPE); } - + + @Override + public void close() throws IOException { + requestService.close(); + } } diff --git a/powerjob-client/src/main/java/tech/powerjob/client/service/RequestService.java b/powerjob-client/src/main/java/tech/powerjob/client/service/RequestService.java index 2a5dff0b..14c2c8c6 100644 --- a/powerjob-client/src/main/java/tech/powerjob/client/service/RequestService.java +++ b/powerjob-client/src/main/java/tech/powerjob/client/service/RequestService.java @@ -1,12 +1,14 @@ package tech.powerjob.client.service; +import java.io.Closeable; + /** * 请求服务 * * @author tjq * @since 2024/2/20 */ -public interface RequestService { +public interface RequestService extends Closeable { String request(String path, PowerRequestBody powerRequestBody); diff --git a/powerjob-client/src/main/java/tech/powerjob/client/service/impl/ClusterRequestServiceOkHttp3Impl.java b/powerjob-client/src/main/java/tech/powerjob/client/service/impl/ClusterRequestServiceOkHttp3Impl.java index bd8ace59..970e4b2f 100644 --- a/powerjob-client/src/main/java/tech/powerjob/client/service/impl/ClusterRequestServiceOkHttp3Impl.java +++ b/powerjob-client/src/main/java/tech/powerjob/client/service/impl/ClusterRequestServiceOkHttp3Impl.java @@ -131,4 +131,17 @@ public class ClusterRequestServiceOkHttp3Impl extends AppAuthClusterRequestServi .connectTimeout(Optional.ofNullable(config.getReadTimeout()).orElse(DEFAULT_TIMEOUT_SECONDS), TimeUnit.SECONDS); } + @Override + public void close() throws IOException { + + // 关闭 Dispatcher + okHttpClient.dispatcher().executorService().shutdown(); + // 清理连接池 + okHttpClient.connectionPool().evictAll(); + // 清理缓存(如果有使用) + Cache cache = okHttpClient.cache(); + if (cache != null) { + cache.close(); + } + } }