Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Parameter

Default

Description

name

mandatory

Name for the proxy target

targetServer

mandatory

URL of the target server

requestTypeCategory

mandatory

Type of request that are processed by the target. The value controls the possible mechanisms that are available to dispatch the request to the matching pipelines.

Possible values are: SOAP and REST

requestURI

mandatory

Request URI that is used to detect that an incoming request on the workload proxy should be sent to this proxy target

JEAF Workload Proxy uses Apaches HTTP Client to communicate with the proxy target. For each proxy target there is a separate connection pool, which can be configured using the parameters below

maxIdleConnections

20

Maximum amount of idle connections in the connection pool

keepAliveDuration

60000

Keep alive duration for connection to proxy target (in milliseconds)

validateAfterInactivityDuration

10000

Parameter configures the time period in milliseconds after which a connection is validated before it is taken from the pool again.

maxRetries

1

Maximum amount of retries before a call to the proxy target is considered to be failed.

retryInterval

100

Interval in milliseconds after which the proxy target is called again in case that retries are configured.

responseTimeout

10000

Response timeout in milliseconds for calls to proxy target. Please be aware that this is a very sensitive parameter and needs to be fine-tuned for your purposes. the response timeout has a very strong influence on the behavior of your service to the outside world and also influences pipeline configuration values.

connectTimeout

10000

Timeout in milliseconds to establish connections to the proxy target. As connections are pooled this parameter should not have a too strong influence on the overall behavior. However please ensure that it fits to your environment.

JEAF Workload proxy also makes use of a so called circuit breaker for each proxy target. The parameters below can be used to configure it.

failureRateThreshold

30

Failure rate threshold (percent of requests) defines which amount of failed request must be exceeded due to technical problems that the circuit breaker opens and no further request will be sent to the proxy target.

Value must between 0 and 100.

durationInOpenState

1000

Duration in milliseconds that the circuit breaker stays open until request will be sent to the proxy target again.

The value must be zero or greater.

slowRequestDuration

10000

Configures the duration in milliseconds above which calls are considered as slow and increase the slow calls percentage.

The value must be zero or greater.

slowRequestRateThreshold

30

Configures the slow request threshold in percentage. The circuit breaker considers a call as slow when the call duration is greater than slowCallDuration. When the percentage of slow calls is equal to or greater than the threshold, the circuit breaker transitions to open and starts short-circuiting calls.

Value must between 0 and 100.

permittedCallsInHalfOpenState

5

Configures the number of permitted calls when the circuit breaker is half open.

The value must be zero or greater.

slidingWindowSizeSeconds

5

Configures the size of the sliding window in seconds which is used to record the outcome of calls when the circuit breaker is closed.

The value must be greater than 0.

Key Resolution Rules

When requests are received by JEAF Workload Proxy for a specific target then they are dispatched to a pipeline that is responsible to take care about its processing (or rejection).

Currently key resolution rules are only supported for SOAP requests. In case of REST, dispatching is only possible based on the URI.

In case of SOAP at least 1 key resolution rule is expected per proxy target.

requestKey

mandatory

Key for unique identification of a request type. This key will be used when dispatching requests to pipelines as pipelines are responsible for 1 or more request keys.

xpathExpression

optional

XPath expression that is used to evaluate if a request matches to this request key. If there is no XPath expression defined for a key resolution rule then this rule is the default rule.

...

Example

Expand
titleSimpleProxyConfiguration.yaml
Bitbucket file macro
urlhttps://bitbucket.org/anaptecs/jeaf-workload-proxy/src/master/jeaf-workload-proxy/src/test/resources/simple/SimpleProxyConfiguration.yaml
syntaxHighlightingYaml

...

Parameter

Default

Description

id

mandatory

Unique ID of the pipeline.

name

optional

Name of the pipeline. If no name is provided then the ID will also be used as name.

description

optional

Description of the pipeline.

coreThreads

mandatory

The core thread size defines the standard size of the thread pool. The size of the thread will only be extended to the maximum size in case the the queue reaches its maximum size. For further details please refer to ThreadPoolExecutor.

maxThreads

-1

Maximum amount of threads that will be used by the pipeline. In standard working mode the pipeline will not use more threads then defined by coreThreads. Only when the queue reaches its limit max threads will be used. By default maxThreads will have the same size as coreThreads.

threadPriority

5

Valid values as defined by Java must be within 1 and 10.

maxThreadKeepAlive

60000

Maximum time in milliseconds until threads that exceed the minimum pool size are kept alive if they are not used. Default is 60 seconds.

queueType

FIFO

Implementation type of the queue that is used to implement the workload pipeline.

Currently NOT_QUEUED and FIFO are supported.

maxQueueDepth

50

Maximum size of the queue that is used for requests in case that all threads of the pipeline are currently occupied.

maxLatency

-1

Maximum latency in the defined timeUnit that is accepted due to queuing of requests. If the defined maximum time is exceeded then the request will be rejected. This value is similar to a connection wait timeout for JDBC connections.

timeUnit

MILLISECONDS

Time unit that is used for all time values. Default is MILLISECONDS.

defaultPipeline

false

Parameter define if this pipeline definition is the default pipeline. The default pipeline will be used if no other more specific pipeline could be found for a certain request type.

Keys for Pipelines

A pipeline can be connected with multiple keys. JEAF Workload Proxy know two types of keys: Generic Keys and REST Keys.

Generic keys result from key resolution rules that are define in a proxy target. Using the keys a request is dispatched to a pipeline with the matching key. REST Keys are directly created based on the received request using URI and HTTP method of the request.

genericKeys

optional

List contains one or more generic key. Entries are described in {genericKeys}.key.

key

mandatory

Name of the generic key. The key also should be defined for at least one of the proxy targets.

restKeys

optional

List contains one or more

endpointURL

mandatory

Endpoint URL of the REST Key.

httpMethod

optional

Optional HTTP method of the REST Key.

Valid values are GET, POST, PUT, PATCH, DELETE, HEAD, CONNECT, OPTIONS and TRACE

...

Example

Expand
titleSimplePipelineConfiguration.yaml
Bitbucket file macro
urlhttps://bitbucket.org/anaptecs/jeaf-workload-proxy/src/master/jeaf-workload-proxy/src/test/resources/simple/SimplePipelineConfiguration.yaml
syntaxHighlightingYaml