[
https://issues.apache.org/jira/browse/CAMEL-6840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16517695#comment-16517695
]
ASF GitHub Bot commented on CAMEL-6840:
---------------------------------------
WillemJiang commented on a change in pull request #2376: CAMEL-6840 - add
grouped throttling feature, both XML and Java DSL should be fine now.
URL: https://github.com/apache/camel/pull/2376#discussion_r196629146
##########
File path: camel-core/src/main/java/org/apache/camel/processor/Throttler.java
##########
@@ -235,63 +283,122 @@ protected void enqueuePermit(final ThrottlePermit
permit, final Exchange exchang
/**
* Evaluates the maxRequestsPerPeriodExpression and adjusts the throttle
rate up or down.
*/
- protected void calculateAndSetMaxRequestsPerPeriod(final Exchange
exchange) throws Exception {
+ protected void
calculateAndSetMaxRequestsPerPeriod(DelayQueue<ThrottlePermit> delayQueue,
final Exchange exchange, final Integer key) throws Exception {
Integer newThrottle =
maxRequestsPerPeriodExpression.evaluate(exchange, Integer.class);
if (newThrottle != null && newThrottle < 0) {
throw new IllegalStateException("The maximumRequestsPerPeriod must
be a positive number, was: " + newThrottle);
}
- synchronized (this) {
- if (newThrottle == null && throttleRate == 0) {
+ Object lockOnSync = null;
+ Integer currentThrottleRate = throttleRate;
+ if (correlationExpression != null) {
+ currentThrottleRate = throttleRatesMap.get(key);
+ lockOnSync = new Integer(currentThrottleRate.intValue());
Review comment:
Our suggestion is using the currentThrottleRate as the lock, and if you
create a new Integer with the currentThrottleRate intValue, you always get a
new Integer instance for the lockOnSync variable. It doesn't block the thread
which try to access same ThrottleRate at the same time.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Allow Throttler EIP to specify SLA per client/correlated-group
> --------------------------------------------------------------
>
> Key: CAMEL-6840
> URL: https://issues.apache.org/jira/browse/CAMEL-6840
> Project: Camel
> Issue Type: New Feature
> Components: camel-core, eip
> Reporter: Christian Posta
> Assignee: Önder Sezgin
> Priority: Major
> Fix For: 2.22.0
>
>
> Basic idea is to allow throttler to have a predicate to determine whether or
> not to apply throttling to that exchange.
> From this Mailing List discussion:
> http://camel.465427.n5.nabble.com/Throttling-by-client-ID-td5741032.html
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)