Рекомендации по настройке Apache Http Client 4.5.11 в производстве [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Рекомендации по настройке Apache Http Client 4.5.11 в производстве [закрыто]

Сообщение Anonymous »

Ниже приведен компонент My ApacheHttpClient Spring, и мне интересно, подходит ли моя конфигурация для производства или мне нужно настроить какие-либо конфигурации? Может кто-нибудь поделиться информацией, если вы используете последнюю версию Apache Http-клиента в производстве

@Service
public class ApacheHttpClient implements IHttpClient {
private static final Logger LOGGER = Logger
.getInstance(ApacheHttpClient.class);
private static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 400;
private static final int DEFAULT_IDLE_CONNECTION_EVICTION_FREQUENCY_SECONDS = 300;
private static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE = DEFAULT_MAX_TOTAL_CONNECTIONS;

private static final int DEFAULT_CONNECTION_TIMEOUT_MILLISECONDS = (60 * 1000);
private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS = (4 * 60 * 1000);
private static final int DEFAULT_WAIT_TIMEOUT_MILLISECONDS = (60 * 1000);
private static final int DEFAULT_VALIDATE_AFTER_INACTIVITY_MILLISECONDS = (5 * 60 * 1000);

private static final int DEFAULT_KEEP_ALIVE_MILLISECONDS = (5 * 60 * 1000);
private static final int DEFAULT_REQUEST_RETRY = 2;

@Autowired
private SSLContextHelper customSSLContext;

private int keepAlive = DEFAULT_KEEP_ALIVE_MILLISECONDS;
private int maxTotalConnections = DEFAULT_MAX_TOTAL_CONNECTIONS;

private int maxConnectionsPerRoute = DEFAULT_MAX_CONNECTIONS_PER_ROUTE;
private int connectTimeout = DEFAULT_CONNECTION_TIMEOUT_MILLISECONDS;
private int readTimeout = DEFAULT_READ_TIMEOUT_MILLISECONDS;

private int waitTimeout = DEFAULT_WAIT_TIMEOUT_MILLISECONDS;
private int requestRetry = DEFAULT_REQUEST_RETRY;

private CloseableHttpClient httpClient;

private ConnectionKeepAliveStrategy keepAliveStrategy = (response,
context) -> {
HeaderElementIterator it = new BasicHeaderElementIterator(
response.headerIterator(
HTTP.CONN_KEEP_ALIVE));
while (it
.hasNext()) {
HeaderElement he = it
.nextElement();
String param = he
.getName();
String value = he
.getValue();
if (value != null
&& param.equalsIgnoreCase(
"timeout")) {
try {
return Long
.parseLong(
value)
* 1000;
} catch (NumberFormatException ignore) {}
}
}
return keepAlive;
};

@PostConstruct
public void initializeApacheHttpClient() {

// config timeout
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(waitTimeout)
.setSocketTimeout(readTimeout).build();
Registry socketFactoryRegistry = RegistryBuilder. create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(customSSLContext.getSSLContext())).build();

PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);

connManager.setMaxTotal(maxTotalConnections);

// Increase default max connection per route
connManager.setDefaultMaxPerRoute(maxConnectionsPerRoute);

// Defines period of inactivity in milliseconds after which persistent connections must be re-validated prior to
// being reused
connManager.setValidateAfterInactivity(DEFAULT_VALIDATE_AFTER_INACTIVITY_MILLISECONDS);

httpClient = HttpClients.custom().setKeepAliveStrategy(keepAliveStrategy).setConnectionManager(connManager)
.setConnectionManagerShared(true).setSSLContext(customSSLContext.getSSLContext())
.setDefaultRequestConfig(config)
.setRetryHandler(new DefaultHttpRequestRetryHandler(requestRetry, true))
.build();

// detect idle and expired connections and close them
IdleConnectionEvictor staleMonitor = new IdleConnectionEvictor(connManager, DEFAULT_IDLE_CONNECTION_EVICTION_FREQUENCY_SECONDS);
staleMonitor.start();

LOGGER.log(Level.INFO, "Initialize ApacheHttpClient is successful");
}
}


Подробнее здесь: https://stackoverflow.com/questions/624 ... production
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»