You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

393 lines
18 KiB

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_80) on Wed Nov 30 19:45:05 CET 2022 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AIMDBackoffManager (Apache HttpComponents Client 4.5.14 API)</title>
<meta name="date" content="2022-11-30">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AIMDBackoffManager (Apache HttpComponents Client 4.5.14 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AIMDBackoffManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/http/impl/client/AbstractResponseHandler.html" title="class in org.apache.http.impl.client"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/http/impl/client/AutoRetryHttpClient.html" title="class in org.apache.http.impl.client"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/http/impl/client/AIMDBackoffManager.html" target="_top">Frames</a></li>
<li><a href="AIMDBackoffManager.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.http.impl.client</div>
<h2 title="Class AIMDBackoffManager" class="title">Class AIMDBackoffManager</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.http.impl.client.AIMDBackoffManager</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/http/client/BackoffManager.html" title="interface in org.apache.http.client">BackoffManager</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">AIMDBackoffManager</span>
extends <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/http/client/BackoffManager.html" title="interface in org.apache.http.client">BackoffManager</a></pre>
<div class="block"><p>The <code>AIMDBackoffManager</code> applies an additive increase,
multiplicative decrease (AIMD) to managing a dynamic limit to
the number of connections allowed to a given host. You may want
to experiment with the settings for the cooldown periods and the
backoff factor to get the adaptive behavior you want.</p>
<p>Generally speaking, shorter cooldowns will lead to more steady-state
variability but faster reaction times, while longer cooldowns
will lead to more stable equilibrium behavior but slower reaction
times.</p>
<p>Similarly, higher backoff factors promote greater
utilization of available capacity at the expense of fairness
among clients. Lower backoff factors allow equal distribution of
capacity among clients (fairness) to happen faster, at the
expense of having more server capacity unused in the short term.</p></div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>4.2</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#AIMDBackoffManager(org.apache.http.pool.ConnPoolControl)">AIMDBackoffManager</a></strong>(org.apache.http.pool.ConnPoolControl&lt;<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&gt;&nbsp;connPerRoute)</code>
<div class="block">Creates an <code>AIMDBackoffManager</code> to manage
per-host connection pool sizes represented by the
given <code>ConnPoolControl</code>.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#backOff(org.apache.http.conn.routing.HttpRoute)">backOff</a></strong>(<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&nbsp;route)</code>
<div class="block">Called when we have decided that the result of
using a connection should be interpreted as a
backoff signal.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#probe(org.apache.http.conn.routing.HttpRoute)">probe</a></strong>(<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&nbsp;route)</code>
<div class="block">Called when we have determined that the result of
using a connection has succeeded and that we may
probe for more connections.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#setBackoffFactor(double)">setBackoffFactor</a></strong>(double&nbsp;d)</code>
<div class="block">Sets the factor to use when backing off; the new
per-host limit will be roughly the current max times
this factor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#setCooldownMillis(long)">setCooldownMillis</a></strong>(long&nbsp;l)</code>
<div class="block">Sets the amount of time, in milliseconds, to wait between
adjustments in pool sizes for a given host, to allow
enough time for the adjustments to take effect.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/http/impl/client/AIMDBackoffManager.html#setPerHostConnectionCap(int)">setPerHostConnectionCap</a></strong>(int&nbsp;cap)</code>
<div class="block">Sets the absolute maximum per-host connection pool size to
probe up to; defaults to 2 (the default per-host max).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AIMDBackoffManager(org.apache.http.pool.ConnPoolControl)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AIMDBackoffManager</h4>
<pre>public&nbsp;AIMDBackoffManager(org.apache.http.pool.ConnPoolControl&lt;<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&gt;&nbsp;connPerRoute)</pre>
<div class="block">Creates an <code>AIMDBackoffManager</code> to manage
per-host connection pool sizes represented by the
given <code>ConnPoolControl</code>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>connPerRoute</code> - per-host routing maximums to
be managed</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="backOff(org.apache.http.conn.routing.HttpRoute)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>backOff</h4>
<pre>public&nbsp;void&nbsp;backOff(<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&nbsp;route)</pre>
<div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/http/client/BackoffManager.html#backOff(org.apache.http.conn.routing.HttpRoute)">BackoffManager</a></code></strong></div>
<div class="block">Called when we have decided that the result of
using a connection should be interpreted as a
backoff signal.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/http/client/BackoffManager.html#backOff(org.apache.http.conn.routing.HttpRoute)">backOff</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/http/client/BackoffManager.html" title="interface in org.apache.http.client">BackoffManager</a></code></dd>
</dl>
</li>
</ul>
<a name="probe(org.apache.http.conn.routing.HttpRoute)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>probe</h4>
<pre>public&nbsp;void&nbsp;probe(<a href="../../../../../org/apache/http/conn/routing/HttpRoute.html" title="class in org.apache.http.conn.routing">HttpRoute</a>&nbsp;route)</pre>
<div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/http/client/BackoffManager.html#probe(org.apache.http.conn.routing.HttpRoute)">BackoffManager</a></code></strong></div>
<div class="block">Called when we have determined that the result of
using a connection has succeeded and that we may
probe for more connections.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/http/client/BackoffManager.html#probe(org.apache.http.conn.routing.HttpRoute)">probe</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/http/client/BackoffManager.html" title="interface in org.apache.http.client">BackoffManager</a></code></dd>
</dl>
</li>
</ul>
<a name="setBackoffFactor(double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBackoffFactor</h4>
<pre>public&nbsp;void&nbsp;setBackoffFactor(double&nbsp;d)</pre>
<div class="block">Sets the factor to use when backing off; the new
per-host limit will be roughly the current max times
this factor. <code>Math.floor</code> is applied in the
case of non-integer outcomes to ensure we actually
decrease the pool size. Pool sizes are never decreased
below 1, however. Defaults to 0.5.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>d</code> - must be between 0.0 and 1.0, exclusive.</dd></dl>
</li>
</ul>
<a name="setCooldownMillis(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCooldownMillis</h4>
<pre>public&nbsp;void&nbsp;setCooldownMillis(long&nbsp;l)</pre>
<div class="block">Sets the amount of time, in milliseconds, to wait between
adjustments in pool sizes for a given host, to allow
enough time for the adjustments to take effect. Defaults
to 5000L (5 seconds).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>l</code> - must be positive</dd></dl>
</li>
</ul>
<a name="setPerHostConnectionCap(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setPerHostConnectionCap</h4>
<pre>public&nbsp;void&nbsp;setPerHostConnectionCap(int&nbsp;cap)</pre>
<div class="block">Sets the absolute maximum per-host connection pool size to
probe up to; defaults to 2 (the default per-host max).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>cap</code> - must be &gt;= 1</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AIMDBackoffManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/http/impl/client/AbstractResponseHandler.html" title="class in org.apache.http.impl.client"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/http/impl/client/AutoRetryHttpClient.html" title="class in org.apache.http.impl.client"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/http/impl/client/AIMDBackoffManager.html" target="_top">Frames</a></li>
<li><a href="AIMDBackoffManager.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1999&#x2013;2022 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>