Sample 372: Use of Concurrency Throttling and Request Rate Based Throttling

<definitions xmlns="http://ws.apache.org/ns/synapse"> <registry provider="org.apache.synapse.registry.url.SimpleURLRegistry"> <!-- the root property of the simple URL registry helps resolve a resource URL as root + key --> <parameter name="root">file:repository/</parameter> <!-- all resources loaded from the URL registry would be cached for this number of milli seconds --> <parameter name="cachableDuration">150000</parameter> </registry> <sequence name="onAcceptSequence"> <log level="custom"> <property name="text" value="**Access Accept**"/> </log> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </sequence> <sequence name="onRejectSequence" trace="enable"> <log level="custom"> <property name="text" value="**Access Denied**"/> </log> <makefault response="true"> <code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/> <reason value="**Access Denied**"/> </makefault> <send/> <drop/> </sequence> <proxy name="StockQuoteProxy"> <target> <inSequence> <throttle onReject="onRejectSequence" onAccept="onAcceptSequence" id="A"> <policy key="conf/sample/resources/policy/throttle_policy.xml"/> </throttle> </inSequence> <outSequence> <throttle id="A"/> <send/> </outSequence> </target> <publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/> </proxy> </definitions>

Objective

Showcase how to use the concurrency throttling in conjunction with request rate throttling

Pre-requisites

  • Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
  • Start Synapse using the configuration numbered 372 (repository/conf/sample/synapse_sample_372.xml)
    Unix/Linux: sh synapse.sh -sample 372
    Windows: synapse.bat -sample 372

Executing the Client

This is a combination of sample 370 and sample 371. In this case the throttle policy is loaded from the 'throttle_policy.xml' file which is fetched from the registry. To verify the functionality, it requires running a load test. The all enabled request from the concurrency throttling will be controlled by the access rate base throttling according to the policy.

Run the client as follows.

ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy

You will get same results as in sample 371. If you run the load test, results will be different due to the effect of concurrency throttling.

Back to Catalog