A builder of Finagle Clients.
Used by builder to throw exceptions if the specification is incomplete.
Used by builder to throw exceptions if the specification is incomplete.
if (!_codec.isDefined) throw new IncompleteSpecification("No codec was specified")
A handy Builder for constructing Servers (i.e., binding Services to a port).
A handy Builder for constructing Servers (i.e., binding Services to a port). This class is subclassable. Override copy() and build() to do your own dirty work.
Please see the
Finagle user guide
for information on the preferred with
-style client-construction APIs.
The main class to use is com.twitter.finagle.builder.ServerBuilder, as so
ServerBuilder() .stack(Http.server) .hostConnectionMaxLifeTime(5.minutes) .readTimeout(2.minutes) .name("servicename") .bindTo(new InetSocketAddress(serverPort)) .build(plusOneService)
The ServerBuilder
requires the definition of stack
, bindTo
and name
. In Scala, these are statically type
checked, and in Java the lack of any of the above causes a runtime
error.
The build
method uses an implicit argument to statically
typecheck the builder (to ensure completeness, see above). The Java
compiler cannot provide such implicit, so we provide a separate
function in Java to accomplish this. Thus, the Java code for the
above is
ServerBuilder.safeBuild( plusOneService, ServerBuilder.get() .stack(Http.server()) .hostConnectionMaxLifeTime(5.minutes) .readTimeout(2.minutes) .name("servicename") .bindTo(new InetSocketAddress(serverPort)));
Alternatively, using the unsafeBuild
method on ServerBuilder
verifies the builder dynamically, resulting in a runtime error
instead of a compiler error.
The following defaults are applied to servers constructed via ServerBuilder, unless overridden with the corresponding method. These defaults were chosen carefully so as to work well for most use cases. Before changing any of them, make sure that you know exactly how they will affect your application -- these options are typically only changed by expert users.
- openConnectionsThresholds
: None
- maxConcurrentRequests
: Int.MaxValue
- backlog
: OS-defined default value
The user guide
for information on the preferred with
-style APIs instead.
A monitor that unrolls the exception causes to report source information if any
Factory for com.twitter.finagle.builder.ClientBuilder instances
Factory for com.twitter.finagle.builder.ServerBuilder instances
A builder of Finagle Clients.
Please see the user guide for information on the preferred
with
-style and MethodBuilder client-construction APIs.The
ClientBuilder
requires the definition ofcluster
,stack
, andhostConnectionLimit
. In Scala, these are statically type checked, and in Java the lack of any of the above causes a runtime error.The
build
method uses an implicit argument to statically typecheck the builder (to ensure completeness, see above). The Java compiler cannot provide such implicit, so we provide a separate function in Java to accomplish this. Thus, the Java code for the above isAlternatively, using the
unsafeBuild
method onClientBuilder
verifies the builder dynamically, resulting in a runtime error instead of a compiler error.Defaults
The following defaults are applied to clients constructed via ClientBuilder, unless overridden with the corresponding method. These defaults were chosen carefully so as to work well for most use cases.
Commonly-configured options:
connectTimeout
: Duration.ToptcpConnectTimeout
: 1 secondrequestTimeout
: Duration.Toptimeout
: Duration.TophostConnectionLimit
:Int.MaxValue
hostConnectionCoresize
: 0hostConnectionIdleTime
: Duration.TophostConnectionMaxWaiters
:Int.MaxValue
failFast
: truefailureAccrualParams
,failureAccrualFactory
:numFailures
= 5,markDeadFor
= 5 secondsAdvanced options:
Before changing any of these, make sure that you know exactly how they will affect your application -- these options are typically only changed by expert users.
keepAlive
: Unspecified, in which case the Java default offalse
is usedhostConnectionMaxIdleTime
: Duration.TophostConnectionMaxLifeTime
: Duration.TopThe user guide for information on the preferred
with
-style and MethodBuilder client-construction APIs.