WSO API manager 2.2.0 Индивидуальное регулирование IP (пользовательская политика) - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь создать собственную политику регулирования для запроса газа для каждого IP-адреса.

Правило: каждому Ip разрешено выдавать только 5 запросов за 1 минуту.

Я обнаружил, что ключ газаможет быть только resourceKey, userId, apiContext, apiVersion, appTenant, apiTenant или appId.

Поскольку мой api общедоступен (не требует аутентификации), UserId отсутствует, поэтому я написал собственное расширение, которое является базовым обходным путемограничение шаблона ключа и перемещение IP-адреса запроса в UserId.

Но регулирование вообще не работает, вот мой запрос Siddhi:

FROM RequestStream
SELECT 
userId, 
(apiContext == '/test/v1.0.0' and apiVersion == 'v1.0.0') AS isEligible ,
str:concat(userId,':','/test/v1.0.0:v1.0.0') as throttleKey
INSERT INTO EligibilityStream;

FROM EligibilityStream[isEligible==true]#throttler:timeBatch(1 min)
select throttleKey, (count(userId) >= 5) as isThrottled, expiryTimeStamp
group by throttleKey 
INSERT ALL EVENTS into ResultStream;

Может ли кто-нибудь помочь решить эту задачу?

...