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. Throttling of individual gateways is not supported at this time.
The following options are available:
-
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.
-
maxRequests : the maximum number of requests that can be processed within a specified timePeriod. Processing will be delayed until the start of the next period for any messages received after the limit is reached.
Here's an example configuration, restricting the OrderService to handle at most one request every ten seconds. Notice 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>
Specifying the same configuration in the editor: