Я использую wso2-am 2.0.0 для достижения ограничения скорости для API. Я опубликовал API с одним пользователем и затем подписались другим пользователем. При подписке я выбираю уровень подписки на 20 запросов в минуту для этого API. Кроме того, приложение, используемое для подписки на API, имеет ограничение в 50 запросов в минуту. Теперь, когда я тестирую API, только ограничение уровня приложений на уровне приложений происходит примерно через 50 запросов. Предел уровня API не применяется. В идеале пользователь не должен иметь доступ к API после 20 запросов. Я использую Windows-машину для настройки сервера wso2 и Apache JMeter для отправки запросов на сервер. Что мне здесь не хватает? Нужна помощь ...Ограничение скорости уровня API, которое не происходит в wso2
2
A
ответ
0
Политика конфиденциальности.
@Plan:name('carbon.super_app_BandwidthPolicy')
@Plan:description('ExecutionPlan for app_BandwidthPolicy')
@Import('org.wso2.throttle.processed.request.stream:1.0.0')
define stream RequestStream (messageID string, appKey string, appTier string, subscriptionKey string, apiKey string, apiTier string, subscriptionTier string, resourceKey string, resourceTier string, userId string, apiContext string, apiVersion string, appTenant string, apiTenant string, appId string, apiName string, propertiesMap string);
@Export('org.wso2.throttle.globalThrottle.stream:1.0.0')
define stream GlobalThrottleStream (throttleKey string, isThrottled bool, expiryTimeStamp long);
FROM RequestStream
SELECT messageID, (appTenant == 'carbon.super' and appTier == 'BandwidthPolicy') AS isEligible, appKey AS throttleKey, propertiesMap
INSERT INTO EligibilityStream;
FROM EligibilityStream[isEligible==true]#throttler:timeBatch(1 min, 0)
select throttleKey, (sum(cast(map:get(propertiesMap,'messageSize'),'long')) >= 4194304) as isThrottled, expiryTimeStamp group by throttleKey
INSERT ALL EVENTS into ResultStream;
from ResultStream#throttler:emitOnStateChange(throttleKey, isThrottled)
select *
insert into GlobalThrottleStream;
+0
спасибо :). Это то, что я хотел – siddhesh
Вы используете стандартное расширенное дросселирование по умолчанию? – Bee
Публикуя API, я установил это ... Политика расширенного управления: я выбрал «Применить к уровню API» и поместил в раскрывающемся списке значение «Без ограничений». – siddhesh
Если вы создали новую политику подписки (которая составляет 20 в минуту) правильно, она должна дросселировать, как ожидалось. Можете ли вы разместить соответствующий файл политики в 'wso2am-2.0.0/repository/deployment/server/executionplans'? – Bee