2014-06-11 42 views
-1

我創建了一個可以使用API​​每小時6次的配額以下的配額。這是一個驗證API密鑰驗證類型。根據在API代理中設置的配額,配額違規不起作用

網址爲http://damuorgn-test.apigee.net/weatherforecastforlongandlat?apikey=dJAXoH8y6GfVNJSjlDhpVIB4XCVyJZ1R

但是,只有第八次之後(實際上它應該是第七次)配額異常發生。另外,當我嘗試更改配額限制並重新部署API代理時,我仍然在第一次看到配額異常。請指教。

我正在使用雲計算的免費組織。

配額1 假 假 小時 2014年6月11日19:00:00

+0

您可以將您的配額政策作爲代碼來使用嗎?它在這裏沒有正確顯示,所以很難說出你正在做什麼。 –

+0

<配額異步= 「假」 continueOnError = 「假」 啓用= 「真」 名稱= 「配額-1」 型= 「日曆」> 配額1 <允許計數=「6 「countRef =」 request.header.allowed_quota 「/> <間隔REF =」 request.header.quota_count 「> 1 user3636769

+0

小時 2014-6-11 19:00:00 20 5 user3636769

回答

0

好了兩件事情......

1)您的配額設置爲<分佈式> false < /分佈式>。
默認情況下,您的Apigee實例在兩個單獨的消息處理器(執行繁重任務的服務器)上運行。這意味着每個MP將會計數並且您的配額有效值爲6,您實際上有6 * 2個服務器= 12.

2)您的配額在第二個示例中是分佈式但異步的。 如果您未將<分佈式>和<同步>設置爲false,Apigee將通過簽入中央數據服務器來共享配額計數。總會有一些延遲,但您已設置AsynchronousConfiguration以便每20秒鐘或每5封郵件檢入一次中央服務器,因此您可以在每個MP處理器上檢查其他服務器之前計數爲5。

請記住,在像Apigee這樣的分佈式處理模型中,您永遠不會得到絕對精確的數字,因爲即使分佈式設置爲true,並將異步設置爲false,服務器之間的對話也總會有一些滯後。

此外,您可能要剝離出request.header.quota_count等request.header變量 - 如果我通過一些(比如100000)作爲頭像

quota_count: 100000 

Apigee將使用100000而不是1的值(它使用引用的變量,並且僅當引用爲NULL時纔回滾到默認值)。

並且...您可能需要添加一個< Idnetifier ref =「client_ip」>或其他內容,否則該配額對所有用戶都是全局的。請參閱http://apigee.com/docs/api-services/api/variables-reference的Apigee變量參考,瞭解每個流程中可用的變量。