Red Hat Training

A Red Hat training course is available for Red Hat Fuse

9.5. Throttling

SwitchYard provides support for message throttling. Throttling is configured on a composite service and applies to all requests received through all gateways configured on the service. If you have multiple bindings on a composite service, they share the same throttling configuration. If you want a given service to have two different throttling settings (one per binding), then promote the service twice and provide a unique setting for each composite service.
SwitchYard provides the following throttling options:
  • timePeriod : (optional; defaults to 1000) The time period, in milliseconds, over which requests are counted. The message count is reset at the beginning of each period.
    The setting for the time period is static - it can not change at runtime.
  • maxRequests : The maximum number of requests that can be processed within a specified timePeriod. Processing is delayed until the start of the next period for any messages received after the limit is reached.
    The setting for the number of messages is dynamic - it can change at runtime.
Note
Throttling of individual gateways is not supported.

9.5.1. Example

Here's an example configuration, restricting the OrderService to handle at most one request every ten seconds. Note that the sy:throttling element is located within an sca:extensions element.
<sca:composite name="orders" targetNamespace="urn:switchyard-quickstart-demo:orders:0.1.0">
    <sca:service name="OrderService" promote="OrderService">
        <soap:binding.soap>
            <soap:wsdl>wsdl/OrderService.wsdl</soap:wsdl>
            <soap:socketAddr>:9000</soap:socketAddr>
        </soap:binding.soap>
        <sca:extensions>
            <sy:throttling maxRequests="1" timePeriod="10000"/>
        </sca:extensions>
    </sca:service>
</sca:composite>
You can specify the same configuration using the SwitchYard editor as well.