From 2c3e35a74268e4b736b889f1ebdb3f80b6a4fcb9 Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 31 Jan 2021 19:49:16 +0800 Subject: [PATCH] feat: offical HttpProcessor support custom timeout --- .../processors/impl/HttpProcessor.java | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/powerjob-offical-processors/src/main/java/tech/powerjob/offical/processors/impl/HttpProcessor.java b/powerjob-offical-processors/src/main/java/tech/powerjob/offical/processors/impl/HttpProcessor.java index 8b7eb603..5bd79879 100644 --- a/powerjob-offical-processors/src/main/java/tech/powerjob/offical/processors/impl/HttpProcessor.java +++ b/powerjob-offical-processors/src/main/java/tech/powerjob/offical/processors/impl/HttpProcessor.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import tech.powerjob.offical.processors.CommonBasicProcessor; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; /** @@ -21,14 +22,9 @@ import java.util.concurrent.TimeUnit; */ public class HttpProcessor extends CommonBasicProcessor { - private static final OkHttpClient client; - - static { - client = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(60, TimeUnit.SECONDS) - .build(); - } + // 60 seconds + private static final int DEFAULT_TIMEOUT = 60; + private static final Map CLIENT_STORE = new ConcurrentHashMap<>(); @Override public ProcessResult process0(TaskContext taskContext) throws Exception { @@ -61,6 +57,13 @@ public class HttpProcessor extends CommonBasicProcessor { } } + // set default timeout + if (httpParams.timeout == null) { + httpParams.timeout = DEFAULT_TIMEOUT; + } + omsLogger.info("[HttpProcessor] request timeout: {} seconds", httpParams.timeout); + OkHttpClient client = getClient(httpParams.timeout); + Request.Builder builder = new Request.Builder().url(httpParams.url); if (httpParams.headers != null) { httpParams.headers.forEach((k, v) -> { @@ -118,5 +121,16 @@ public class HttpProcessor extends CommonBasicProcessor { private String body; private Map headers; + + /** + * timeout for complete calls + */ + private Integer timeout; + } + + private static OkHttpClient getClient(Integer timeout) { + return CLIENT_STORE.computeIfAbsent(timeout, ignore -> new OkHttpClient.Builder() + .callTimeout(timeout, TimeUnit.SECONDS) + .build()); } }