[
https://issues.apache.org/jira/browse/CAMEL-6840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16518606#comment-16518606
]
ASF GitHub Bot commented on CAMEL-6840:
---------------------------------------
aldettinger 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_r196944201
##########
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:
@onderson
Sorry for confusion. I think it will be clearer expressing my preferences
below:
1) Make a defensive copy of the key only once, and lock on that same object
for the whole group life
2) Lock on the value, currentThrottleRate
3) Lock on throttleRate (group would have been mixed)
----------------------------------------------------------------
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)