कोटा नीति

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

क्या

अनुरोध वाले मैसेज की संख्या कॉन्फ़िगर करने के लिए कोटा नीति का इस्तेमाल करें किसी समयावधि के बारे में बताएं, जैसे कि मिनट, घंटा, दिन, हफ़्ता या महीना. आप कोटा को इस प्रकार सेट कर सकते हैं: एपीआई प्रॉक्सी का इस्तेमाल करने वाले सभी ऐप्लिकेशन के लिए एक जैसा होगा या फिर आप इनके आधार पर कोटा सेट कर सकते हैं:

  • वह प्रॉडक्ट जिसमें एपीआई प्रॉक्सी शामिल है
  • एपीआई का अनुरोध करने वाला ऐप्लिकेशन
  • ऐप्लिकेशन डेवलपर
  • कई अन्य शर्तें

ट्रैफ़िक में हुई कुल बढ़ोतरी से बचने के लिए कोटा का इस्तेमाल न करें. इसके लिए, स्पाइक अरेस्ट का इस्तेमाल करें की नीति देखें. स्पाइक अरेस्ट देखें नीति पढ़ें.

वीडियो

इन वीडियो में, कोटा नीति के साथ कोटा मैनेजमेंट की सुविधा उपलब्ध है:

इंट्रो (न्यू एज)

इंट्रो (क्लासिक एज)

डायनैमिक कोटा

वितरित और सिंक्रोनस

मैसेज की मोटाई

Calendar

रोलिंग विंडो

Flexi

शर्तों के हिसाब से कोटा

फ़्लो वैरिएबल

गड़बड़ी ठीक करना

सैंपल

नीति कोड के इन सैंपल में, कोटा की अवधि शुरू और खत्म करने का तरीका बताया गया है. इसके लिए:

ज़्यादा डायनैमिक कोटा

<Quota name="CheckQuota"> 
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
  <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/>
</Quota>

डाइनैमिक कोटा की मदद से, अलग-अलग कोटा लागू करने वाली एक ही कोटा नीति को कॉन्फ़िगर किया जा सकता है कोटा नीति को पास की गई जानकारी के आधार पर तय करें. इसमें कोटा सेटिंग के लिए एक अन्य शब्द यह कॉन्टेक्स्ट "सर्विस प्लान" है. डाइनैमिक कोटा, ऐप्लिकेशन की जांच करता है "सर्विस प्लान" और इसके बाद उन सेटिंग को लागू करता है.

ध्यान दें: अगर आपने किसी एलिमेंट के लिए वैल्यू और रेफ़रंस, दोनों तय किए हैं, तो तो पहचान को प्राथमिकता मिलती है. अगर रनटाइम पर संदर्भ का समाधान नहीं होता है, तो मान यह होगा इस्तेमाल किया गया.

उदाहरण के लिए, एपीआई प्रॉडक्ट बनाते समय, वैकल्पिक तौर पर अनुमति वाला कोटा सेट किया जा सकता है सीमा, समय की इकाई, और इंटरवल. हालांकि, एपीआई प्रॉडक्ट पर ये वैल्यू सेट करने से एक एपीआई प्रॉक्सी में उनका इस्तेमाल लागू करना चाहिए. आपको उस एपीआई प्रॉक्सी में कोटा नीति भी जोड़नी होगी जो इन वैल्यू को पढ़ता है. Create API देखें प्रॉडक्ट देखें.

ऊपर दिए गए उदाहरण में, कोटा नीति वाले एपीआई प्रॉक्सी में, VerifyAPIKey का इस्तेमाल किया जाता है अनुरोध में पास की गई एपीआई पासकोड की पुष्टि करने के लिए, verify-api-key नाम की नीति का इस्तेमाल किया जाता है. कॉन्टेंट बनाने इसके बाद कोटे की नीति पढ़ने के लिए, VerifyAPIKey नीति से फ़्लो वैरिएबल को ऐक्सेस करती है एपीआई प्रॉडक्ट पर सेट की गई वैल्यू. VerifyAPIKey फ़्लो वैरिएबल के बारे में ज़्यादा जानने के लिए, एपीआई पासकोड की नीति की पुष्टि करें देखें.

दूसरा विकल्प यह है कि आप अलग-अलग डेवलपर या ऐप्लिकेशन पर कस्टम एट्रिब्यूट सेट करें. इसके बाद, कोटा नीति में बताई गई वैल्यू शामिल हैं. उदाहरण के लिए, अगर आपको हर इवेंट के लिए कोटा की अलग-अलग वैल्यू सेट करनी है, डेवलपर. इस मामले में, डेवलपर पर कस्टम एट्रिब्यूट सेट किए जाते हैं. इन एट्रिब्यूट में यह सीमा शामिल होती है, समय इकाई, और अंतराल. इसके बाद, कोटा से जुड़ी नीति में इन वैल्यू का रेफ़रंस दिया गया है, जैसा कि यहां दिखाया गया है नीचे दिया गया है:

<Quota name="DeveloperQuota"> 
  <Identifier ref="verifyapikey.verify-api-key.client_id"/> 
  <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> 
  <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> 
  <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> 
</Quota>

इस उदाहरण में कस्टम एट्रिब्यूट का रेफ़रंस देने के लिए, VerifyAPIKey फ़्लो वैरिएबल का भी इस्तेमाल किया गया है डेवलपर पर सेट कर दिया गया है.

कोटा की नीति के पैरामीटर सेट करने के लिए, किसी भी वैरिएबल का इस्तेमाल किया जा सकता है. वे वैरिएबल ये काम कर सकते हैं यहां से आ रहा है:

  • फ़्लो वैरिएबल
  • एपीआई प्रॉडक्ट, ऐप्लिकेशन या डेवलपर पर प्रॉपर्टी
  • की-वैल्यू मैप (KVM)
  • हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर वगैरह

हर एपीआई प्रॉक्सी के लिए, एक कोटा नीति जोड़ी जा सकती है जो या तो अन्य सभी प्रॉक्सी में मौजूद कोटा की अन्य नीतियों या कोटा नीति का रेफ़रंस वैरिएबल यूनीक होनी चाहिए.

प्रारंभ समय

<Quota name="QuotaPolicy" type="calendar">
  <StartTime>2017-02-18 10:30:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

type वाले कोटा को calendar पर सेट करने के लिए, आपको साफ़ तौर पर <StartTime> वैल्यू. समय का मान जीएमटी समय है, न कि स्थानीय समय समय. अगर आप इस तरह की नीति के लिए <StartTime> वैल्यू नहीं देते हैं calendar, Edge में कोई गड़बड़ी हुई.

हर ऐप्लिकेशन के लिए कोटा काउंटर, <StartTime> के हिसाब से रीफ़्रेश किया जाता है, <Interval> और <TimeUnit> वैल्यू. इसके लिए उदाहरण के लिए, कोटा की गिनती 18 फ़रवरी, 2017 को सुबह 10:30 बजे जीएमटी पर शुरू की जाती है और 5 घंटे. इसलिए, अगली बार यह डेटा 18 फ़रवरी, 2017 को दोपहर 3:30 बजे जीएमटी पर अपडेट किया गया है.

ऐक्सेस काउंटर

<Quota name="QuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

एपीआई प्रॉक्सी के पास, कोटा नीति के तहत सेट किए गए फ़्लो वैरिएबल का ऐक्सेस होता है. आपके पास ऐक्सेस है एपीआई प्रॉक्सी में ये फ़्लो वैरिएबल, कंडिशनल प्रोसेसिंग के लिए इस्तेमाल किए जा सकते हैं. इसलिए, नीति पर नज़र रखें जैसे-जैसे कोटा खत्म होने वाला होता है, मौजूदा कोटा काउंटर को किसी ऐप्लिकेशन को वापस कर दें या किसी दूसरे ऐप्लिकेशन के लिए की वजह.

क्योंकि नीति के लिए फ़्लो वैरिएबल, नीतियों के आधार पर ऐक्सेस किए जाते हैं आपने ऊपर दी गई QuotaPolicy नाम की नीति के लिए, name एट्रिब्यूट का इस्तेमाल किया है इसके फ़्लो वैरिएबल को इस फ़ॉर्म में ऐक्सेस करें:

  • ratelimit.QuotaPolicy.allowed.count: अनुमति वाली संख्या.
  • ratelimit.QuotaPolicy.used.count: मौजूदा काउंटर वैल्यू.
  • ratelimit.QuotaPolicy.expiry.time: काउंटर रीसेट होने पर यूटीसी समय.

आपके पास कई अन्य फ़्लो वैरिएबल हैं जिनका ऐक्सेस आपके पास है. इनके बारे में नीचे बताया गया है.

उदाहरण के लिए, कोटा की वैल्यू वापस करने के लिए, Tasks Center की इस नीति का इस्तेमाल किया जा सकता है रिस्पॉन्स हेडर के तौर पर फ़्लो वैरिएबल:

<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars">
    <AssignTo createNew="false" type="response"/>
    <Set>
        <Headers>
            <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header>
            <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header>
            <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

पहला अनुरोध

<Quota name="MyQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="10000"/>
</Quota>

हर एक घंटे में 10,000 कॉल का कोटा लागू करने के लिए, इस सैंपल कोड का इस्तेमाल करें. नीति रीसेट हो जाती है कोटा काउंटर पर हर घंटे सबसे ऊपर मौजूद होता है. अगर काउंटर का 10,000-कॉल कोटा पूरा हो जाता है तय घंटा खत्म होने से पहले, 10,000 से ज़्यादा कॉल अस्वीकार कर दिए जाते हैं.

उदाहरण के लिए, अगर काउंटर 2017-07-08 07:00:00 से शुरू होता है, तो यह यहां रीसेट हो जाता है 2017-07-08 08:00:00 बजे 0 (शुरू होने के समय से एक घंटा) अगर पहला मैसेज 2017-07-08 07:35:28 पर मिले और मैसेज की संख्या 10,000 हो गई 2017-07-08 08:00:00 से पहले, तय सीमा से ज़्यादा आने वाले कॉल अस्वीकार कर दिए जाएंगे संख्या रीसेट होती है.

काउंटर को रीसेट करने का समय, <Interval> और इन दोनों की वैल्यू के हिसाब से तय होता है <TimeUnit>. उदाहरण के लिए, अगर <Interval> को <TimeUnit> घंटे के लिए 12 मिनट, फिर काउंटर हर बारह घंटे में रीसेट होता है. <TimeUnit> को मिनट, घंटे, दिन, हफ़्ते या महीने पर सेट किया जा सकता है.

अपने एपीआई प्रॉक्सी में एक से ज़्यादा जगहों पर इस नीति का रेफ़रंस दिया जा सकता है. उदाहरण के लिए, आपके पास ये विकल्प हैं उसे प्रॉक्सी PreFlow पर रखें, ताकि इसे हर अनुरोध पर एक्ज़ीक्यूट किया जा सके. या, आप को एपीआई प्रॉक्सी में एक से ज़्यादा फ़्लो पर सेट करें. अगर यहां इस नीति का इस्तेमाल कई जगहों पर किया जाता है, तो प्रॉक्सी के लिए इस्तेमाल किया जाता है, तो यह एक ही काउंटर बनाए रखता है जिसे नीति के सभी इंस्टेंस से अपडेट किया जाता है.

इसके अलावा, अपने एपीआई प्रॉक्सी में कोटा से जुड़ी एक से ज़्यादा नीतियां तय की जा सकती हैं. हर कोटा नीति नीति के name एट्रिब्यूट के आधार पर, अपना काउंटर बनाए रखता है.

आइडेंटिफ़ायर सेट करें

<Quota name="QuotaPolicy" type="calendar">
  <Identifier ref="request.header.clientId"/> 
  <StartTime>2017-02-18 10:00:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

डिफ़ॉल्ट रूप से, कोटा नीति एपीआई प्रॉक्सी के लिए एक काउंटर तय करती है. भले ही, वह किसी अनुरोध का ऑरिजिन. इसके अलावा, <Identifier> एट्रिब्यूट का इस्तेमाल भी किया जा सकता है के मान के आधार पर अलग-अलग काउंटर बनाए रखने के लिए कोटा नीति के साथ <Identifier> एट्रिब्यूट की वैल्यू सबमिट करें.

उदाहरण के लिए, <Identifier> टैग का इस्तेमाल करके, हर क्लाइंट आईडी के लिए. आपके प्रॉक्सी के अनुरोध पर, क्लाइंट ऐप्लिकेशन एक हेडर पास करता है, जिसमें यह शामिल होता है clientID, जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है.

आपके पास <Identifier> एट्रिब्यूट के लिए कोई भी फ़्लो वैरिएबल तय करने का विकल्प होता है. इसके लिए उदाहरण के लिए, आप यह बता सकते हैं कि id नाम के क्वेरी पैरामीटर में आइडेंटिफ़ायर:

<Identifier ref="request.queryparam.id"/>

अगर एपीआई पासकोड या OAuthV2 नीतियों की पुष्टि करने के लिए, VerifyAPIKey नीति का इस्तेमाल किया जाता है के साथ, एपीआई कुंजी या टोकन में मौजूद जानकारी का इस्तेमाल एक जैसी कोटा नीति के लिए काउंटर. उदाहरण के लिए, निम्न <Identifier> टैग, किसी वैरिएबल के client_id फ़्लो वैरिएबल का इस्तेमाल करता है VerifyAPIKey नीति का नाम verify-api-key:

<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>

client_id की हर यूनीक वैल्यू, अब कोटा में अपने काउंटर के बारे में बताती है की नीति देखें.

कक्षा

<Quota name="QuotaPolicy">
  <Interval>1</Interval>
  <TimeUnit>day</TimeUnit>
  <Allow>
    <Class ref="request.header.developer_segment">
      <Allow class="platinum" count="10000"/>
      <Allow class="silver" count="1000" />
    </Class>
  </Allow>
</Quota>

कैटगरी पर आधारित कोटा की संख्या का इस्तेमाल करके, कोटा की सीमाएं डाइनैमिक तौर पर सेट की जा सकती हैं. इस उदाहरण में, कोटा की सीमा, developer_segment की वैल्यू से तय होती है हर अनुरोध के साथ हेडर पास होता है. उस वैरिएबल की वैल्यू platinum हो सकती है या silver. अगर हेडर में कोई अमान्य वैल्यू है, तो नीति एक कोटा दिखाती है उल्लंघन की गड़बड़ी.


कोटा नीति के बारे में जानकारी

कोटा, अनुरोध वाले मैसेज का वह हिस्सा होता है जिसे एपीआई प्रॉक्सी एक तय समयावधि में हैंडल कर सकता है, जैसे कि मिनट, घंटा, दिन, हफ़्ता या महीना. यह नीति ऐसे काउंटर बनाए रखती है जिनका इस्तेमाल एपीआई प्रॉक्सी को मिले अनुरोध. इस सुविधा की मदद से, एपीआई सेवा देने वाली कंपनियां, किसी तय समय में, ऐप्लिकेशन से किए गए एपीआई कॉल की संख्या. कोटा की नीतियों का इस्तेमाल करके, ये काम किए जा सकते हैं उदाहरण के लिए, ऐप्लिकेशन को एक मिनट में सिर्फ़ एक अनुरोध या हर महीने 10,000 अनुरोध तक सीमित करें.

उदाहरण के लिए, अगर किसी महीने के लिए कोटा को 10,000 मैसेज के तौर पर सेट किया गया है, तो दर सीमित करने की प्रोसेस इस तारीख के बाद शुरू होगी 10,000वां मैसेज दिखता है. इससे कोई फ़र्क़ नहीं पड़ता कि पहले 10,000 मैसेज गिने गए दिन या उस अवधि का आखिरी दिन; कोटा काउंटर से पहले, किसी भी अतिरिक्त अनुरोध की अनुमति नहीं है तय समय अंतराल पर खत्म होने पर या कोटा के पूरी तरह से सेट हो जाने तक अपने-आप रीसेट हो जाता है रीसेट करें कोटा का इस्तेमाल करके रीसेट करें नीति पढ़ें.

कोटा में बदलाव जिसे SpikeAest कहा जाता है, ट्रैफ़िक में होने वाली बढ़ोतरी (या बर्स्ट) को रोकता है, जो ऐसा उपयोगकर्ताओं की संख्या में अचानक हुई बढ़ोतरी, गड़बड़ी वाले क्लाइंट या नुकसान पहुंचाने वाले हमलों की वजह से हो सकता है. ज़्यादा के लिए अगर हां, तो स्पाइक अरेस्ट से जुड़ी नीति देखें.

कोटा, अलग-अलग एपीआई प्रॉक्सी पर लागू होते हैं और एपीआई प्रॉक्सी के बीच नहीं बांटे जाते हैं. उदाहरण के लिए, अगर आपके पास किसी एपीआई प्रॉडक्ट में तीन एपीआई प्रॉक्सी हैं, तो किसी एक कोटा को तीनों के बीच शेयर नहीं किया जाता भले ही, तीनों एक ही कोटा नीति के कॉन्फ़िगरेशन का इस्तेमाल करते हों.

कोटा की नीति के टाइप

कोटा की नीति कई अलग-अलग तरह की नीतियों के साथ काम करती है: डिफ़ॉल्ट, calendar, flexi और rollingwindow. हर टाइप तय करता है कि कोटा काउंटर कब चालू होगा शुरू होता है और जब यह रीसेट होता है, जैसा कि नीचे दी गई टेबल में दिखाया गया है:

समय इकाई डिफ़ॉल्ट (या शून्य) रीसेट किया गया कैलेंडर रीसेट करो फ़्लेक्सी रीसेट
मिनट अगले मिनट का प्रारंभ <StartTime> के एक मिनट बाद पहले अनुरोध के एक मिनट बाद
hour अगले घंटे का शीर्ष <StartTime> के एक घंटे बाद पहले अनुरोध के एक घंटे बाद
दिन मौजूदा दिन की आधी रात GMT <StartTime> के 24 घंटे बाद पहली बार अनुरोध करने के 24 घंटे बाद
हफ़्ता हफ़्ते के आखिर में, आधी रात GMT रविवार <StartTime> के एक हफ़्ते बाद पहले अनुरोध के एक हफ़्ते बाद
महीना महीने के आखिरी दिन की आधी रात GMT <StartTime> के बाद एक महीना (28 दिन) पहले अनुरोध के एक महीने (28 दिन) बाद

type="calendar" के लिए, आपको <StartTime>.

टेबल में, rollingwindow टाइप के लिए वैल्यू शामिल नहीं है. रोलिंग विंडो कोटा, किसी कोटा "विंडो" का आकार सेट करके काम करता है, जैसे कि एक घंटे या एक दिन की विंडो. जब नया अनुरोध आता है, तो नीति यह तय करती है कि क्या पहले कोटा पार हुआ "विंडो" समय की है.

उदाहरण के लिए, दो घंटे की ऐसी विंडो सेट की जाती है जिसमें 1,000 अनुरोध किए जा सकते हैं. नया अनुरोध शाम 4:45 बजे आती है. यह नीति पिछले दो घंटे के विंडो के लिए कोटा की संख्या गिनती है. यानी, दोपहर 2:45 बजे से अब तक मिले अनुरोधों की संख्या. अगर कोटे की सीमा पार न हुई हो दो घंटे की विंडो हो, तो अनुरोध की अनुमति हो.

एक मिनट बाद, शाम 4:46 बजे आपको दूसरा अनुरोध आता है. अब नीति, यह पता लगाने के लिए कि सीमा पार हुई है या नहीं.

rollingwindow टाइप के लिए, काउंटर कभी भी रीसेट नहीं होता, लेकिन हर अनुरोध पर फिर से हिसाब लगाया जाता है.

कोटा काउंटर के बारे में जानकारी

डिफ़ॉल्ट रूप से, कोटा नीति एक ही काउंटर बनाए रखती है, भले ही आप कितनी बार भी इसे किसी API प्रॉक्सी में रेफ़र करें. कोटा काउंटर का नाम इस पर आधारित होता है नीति की name एट्रिब्यूट की वैल्यू सबमिट करें.

उदाहरण के लिए, आपने 5 की सीमा वाली MyQuotaPolicy नाम की एक कोटा नीति बनाई है को अनुरोध करता है और उसे एपीआई प्रॉक्सी में एक से ज़्यादा फ़्लो (फ़्लो A, B, और C) पर रखता है. भले ही यह का इस्तेमाल कई फ़्लो में किया है, इसलिए यह एक ही काउंटर बनाए रखता है, जिसे नीति:

  • फ़्लो A चलाया जाता है -> MyPolicyPolicy लागू किया गया और इसका काउंटर = 1
  • फ़्लो B चलाया जाता है -> MyquotPolicy लागू की गई है और इसका काउंटर = 2
  • फ़्लो A चलाया जाता है -> MyPolicyPolicy लागू किया गया और इसका काउंटर = 3
  • फ़्लो C चलाया जाता है -> MyTotalPolicy लागू किया गया और इसका काउंटर = 4
  • फ़्लो A चलाया जाता है -> MyTotalPolicy लागू किया गया और इसका काउंटर = 5

कोटा काउंटर पूरा होने की वजह से, तीनों में से किसी भी फ़्लो के लिए अगला अनुरोध अस्वीकार कर दिया गया उसकी सीमा तय कर सकती है.

एपीआई प्रॉक्सी फ़्लो में एक से ज़्यादा जगहों पर, कोटा की एक ही नीति का इस्तेमाल करना. इससे गलती से कोटा आपकी उम्मीद से ज़्यादा तेज़ी से खत्म हो जाता है. Apigee Edge के एंटीपैटर्न की किताब.

इसके अलावा, अपने एपीआई प्रॉक्सी में कोटा से जुड़ी एक से ज़्यादा नीतियां तय की जा सकती हैं. साथ ही, आपके पास किसी अन्य नीति सेट करें. कोटा के लिए तय की गई हर नीति का अपना अलग काउंटर होता है. नीति की name एट्रिब्यूट की वैल्यू सबमिट करें.

या, इसमें <Class> या <Identifier> एलिमेंट शामिल हैं कोटा नीति का इस्तेमाल एक ही नीति में कई यूनीक काउंटर तय करने के लिए किया जाएगा. इनका इस्तेमाल करके एलिमेंट के लिए, एक ही नीति के तहत अलग-अलग काउंटर बनाए जा सकते हैं. यह इस बात पर निर्भर करता है कि ऐप्लिकेशन किस तरह का अनुरोध करता है, अनुरोध करने वाले ऐप्लिकेशन डेवलपर, क्लाइंट आईडी या अन्य क्लाइंट आइडेंटिफ़ायर वगैरह. ज़्यादा जानकारी के लिए, ऊपर दिए गए उदाहरणों के ज़रिए, <Class> या <Identifier> एलिमेंट.

टाइम नोटेशन

कोटा के सभी समय, कोऑर्डिनेटेड यूनिवर्सल पर सेट किए जाते हैं समय (यूटीसी) टाइम ज़ोन.

कोटा टाइम नोटेशन, अंतरराष्ट्रीय में बताए गए अंतरराष्ट्रीय स्टैंडर्ड तारीख के नोटेशन का पालन करता है स्टैंडर्ड ISO 8601.

तारीख को साल, महीने, और दिन के फ़ॉर्मैट में दिखाया जाता है: YYYY-MM-DD. उदाहरण के लिए, 2015-02-04 से 4 फ़रवरी, 2015 का डेटा मिलता है.

नीचे दिए गए फ़ॉर्मैट में दिन के समय को घंटे, मिनट, और सेकंड के तौर पर दिखाया जाता है: hours:minutes:seconds. उदाहरण के लिए, 23:59:59 समय पहला दिखाता है आधी रात से पहले.

ध्यान दें कि 00:00:00 और 24:00:00 दो नोटेशन यहां उपलब्ध हैं दो मध्यरात्रि में अंतर करता है, जिसे एक तारीख से जोड़ा जा सकता है. इसलिए 2015-02-04 24:00:00 और 2015-02-05 00:00:00 एक ही तारीख और समय हैं. बाद वाला है आम तौर पर नोटेशन का इस्तेमाल करें.

एपीआई प्रॉडक्ट कॉन्फ़िगरेशन से कोटा सेटिंग पाना

एपीआई प्रॉडक्ट कॉन्फ़िगरेशन में कोटा की सीमाएं सेट की जा सकती हैं. ये सीमाएं अपने-आप कोटा लागू करें. इसके बजाय, कोटा नीति में प्रॉडक्ट कोटा की सेटिंग का रेफ़रंस दिया जा सकता है. यहां कुछ कोटा नीतियों के संदर्भ में प्रॉडक्ट पर कोटा सेट करने के फ़ायदे:

  • कोटा से जुड़ी नीतियों के तहत, एपीआई प्रॉडक्ट में सभी एपीआई प्रॉक्सी में एक जैसी सेटिंग का इस्तेमाल किया जा सकता है.
  • आपके पास किसी एपीआई प्रॉडक्ट और कोटा नीतियों के लिए, रनटाइम की सेटिंग में बदलाव करने का विकल्प होता है जो उस वैल्यू का रेफ़रंस देते हैं उनके कोटा की अपडेट की हुई वैल्यू अपने-आप अपडेट हो जाती हैं.

किसी एपीआई प्रॉडक्ट से कोटा सेटिंग का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, "डाइनैमिक कोटा" देखें ऊपर उदाहरण दिया गया है..

एपीआई प्रॉडक्ट के लिए कोटा की सीमाओं को कॉन्फ़िगर करने के बारे में जानकारी पाने के लिए, एपीआई प्रॉडक्ट बनाएं पर जाएं.

एलिमेंट का रेफ़रंस

यहां ऐसे एलिमेंट और एट्रिब्यूट दिए गए हैं जिन्हें इस नीति पर कॉन्फ़िगर किया जा सकता है. ध्यान दें कि कुछ कॉम्बिनेशन अलग-अलग होते हैं या फिर ज़रूरी नहीं होते. खास तरह के इस्तेमाल के लिए सैंपल देखें. कॉन्टेंट बनाने नीचे दिए गए verifyapikey.VerifyAPIKey.apiproduct.* वैरिएबल, डिफ़ॉल्ट रूप से तब उपलब्ध होते हैं, जब पुष्टि करें कि एपीआई पासकोड की नीति "VerifyAPIKey" के बारे में है का इस्तेमाल, अनुरोध में ऐप्लिकेशन के एपीआई पासकोड की जांच करने के लिए किया जाता है. वैरिएबल की वैल्यू, उस एपीआई प्रॉडक्ट की कोटा सेटिंग से मिलती हैं जिससे कुंजी जुड़ी हुई है के साथ, जैसा कि एपीआई प्रॉडक्ट से कोटा सेटिंग पाना कॉन्फ़िगरेशन.

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
   <DisplayName>Quota 3</DisplayName>
   <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
   <Allow>
      <Class ref="request.queryparam.time_variable">
        <Allow class="peak_time" count="5000"/>
        <Allow class="off_peak_time" count="1000"/>
      </Class>
   </Allow>
   <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> 
   <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
   <StartTime>2017-7-16 12:00:00</StartTime> 
   <Distributed>false</Distributed> 
   <Synchronous>false</Synchronous> 
   <AsynchronousConfiguration> 
      <SyncIntervalInSeconds>20</SyncIntervalInSeconds> 
      <SyncMessageCount>5</SyncMessageCount> 
   </AsynchronousConfiguration> 
   <Identifier/> 
   <MessageWeight/> 
</Quota>

&lt;Quota&gt; एट्रिब्यूट

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">

खास तौर पर, यहां दिए गए एट्रिब्यूट इस नीति के लिए हैं.

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
टाइप

इसका इस्तेमाल यह तय करने के लिए करें कि कोटा काउंटर, कोटा के इस्तेमाल की जांच कब और कैसे करता है. यहां जाएं: कोटा की नीतियों के टाइप देखें.

अगर type की वैल्यू हटा दी जाती है, तो काउंटर शुरुआत से शुरू होगा मिनट/घंटा/दिन/हफ़्ते/महीने के हिसाब से.

मान्य वैल्यू में ये शामिल हैं:

  • calendar: शुरू होने के समय के आधार पर कोटा कॉन्फ़िगर करें. कोटा काउंटर को <StartTime>, <Interval>, और <TimeUnit> वैल्यू जिन्हें आपने सेट किया है.
  • rollingwindow: "रोलिंग विंडो" का इस्तेमाल करने वाला कोटा कॉन्फ़िगर करें से कोटा उपयोग निर्धारित करता है. rollingwindow की मदद से, विंडो का साइज़ तय करने के लिए <Interval> और <TimeUnit> एलिमेंट; उदाहरण के लिए, 1 दिन. अनुरोध मिलने पर, Edge देखने के लिए अनुरोध का सही समय क्या होगा (कहें 5:01pm), उस समय और 5:01pm के बीच आने वाले अनुरोधों की संख्या पिछले दिन (1 दिन) और यह तय करता है कि के दौरान कोटा खत्म हुआ है या नहीं उस विंडो पर क्लिक करें.
  • flexi: एक ऐसा कोटा कॉन्फ़िगर करें जिसकी वजह से काउंटर तब शुरू होता है, जब किसी ऐप्लिकेशन से पहले अनुरोध वाला मैसेज मिलता है और वह <Interval>, और <TimeUnit> वैल्यू.
कैलेंडर वैकल्पिक

यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू ये काम कर सकती है: अक्षरों, संख्याओं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुलस्टॉप को शामिल करें. यह मान नहीं हो सकता 255 वर्णों से ज़्यादा होने चाहिए.

इसके अलावा, नीति को लेबल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल करें प्रबंधन यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर को अलग, आम भाषा में इस्तेमाल करने वाले नाम के साथ किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

&lt;Allow&gt; एलिमेंट

कोटा के लिए संख्या की सीमा बताता है. अगर नीति का काउंटर इस सीमा तक पहुंच जाता है मान है, तो काउंटर के रीसेट होने तक बाद वाले कॉल अस्वीकार कर दिए जाते हैं.

<Allow> एलिमेंट को सेट करने के तीन तरीके नीचे दिए गए हैं:

<Allow count="2000"/> 
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 

अगर count और countRef, दोनों का डेटा डाला जाता है, तो countRef को प्राथमिकता मिलती है. यदि रनटाइम के दौरान countRef का समाधान नहीं होता है, तो count का इस्तेमाल किया गया है.

डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: पूर्णांक

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
सोलर पैनलों की संख्या

कोटा के लिए मैसेज की संख्या बताने के लिए इसका इस्तेमाल करें.

उदाहरण के लिए, count एट्रिब्यूट की वैल्यू 100 है, जो एक वैल्यू Interval है, और महीने का TimeUnit, हर महीने 100 मैसेज का कोटा तय करता है.

2000 वैकल्पिक
countRef

किसी कोटा के लिए मैसेज की संख्या वाले फ़्लो वैरिएबल का इस्तेमाल करने के लिए इसका इस्तेमाल करें. count एट्रिब्यूट के बजाय countRef को प्राथमिकता दी जाती है.

कोई नहीं वैकल्पिक

&lt;Allow&gt;/&lt;Class&gt; एलिमेंट

<Class> एलिमेंट की मदद से, वैल्यू को कंडिशनल बनाया जा सकता है <Allow> एलिमेंट की वैल्यू, जो फ़्लो वैरिएबल की वैल्यू के आधार पर तय होती है. इसके लिए <Class> के हर एक अलग <Allow> चाइल्ड टैग, नीति एक अलग काउंटर बनाए रखती है.

<Class> एलिमेंट का इस्तेमाल करने के लिए, फ़्लो वैरिएबल सेट करें. इसके लिए, <Class> टैग के लिए ref एट्रिब्यूट. इसके बाद Edge फ़्लो वैरिएबल, <Allow> चाइल्ड टैग में से किसी एक को चुनने के लिए की संख्या. एज, फ़्लो वैरिएबल की वैल्यू से class से मेल खाता है <Allow> टैग की विशेषता के बारे में बताएंगे, जैसा कि नीचे दिखाया गया है:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

इस उदाहरण में, मौजूदा कोटा काउंटर का मान हर अनुरोध के साथ time_variable क्वेरी पैरामीटर पास किया गया. उस वैरिएबल का कोई मान हो सकता है peak_time या off_peak_time में से. यदि क्वेरी पैरामीटर में कोई अमान्य है वैल्यू को शामिल करने पर, नीति कोटा उल्लंघन की गड़बड़ी दिखाती है.

डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ

इसका इस्तेमाल उस फ़्लो वैरिएबल के बारे में बताने के लिए करें जिसमें कोटा के लिए कोटा क्लास शामिल हो.

कोई नहीं ज़रूरी है

&lt;Allow&gt;/&lt;Class&gt;/&lt;Allow&gt; एलिमेंट

<Allow> एलिमेंट, कोटा काउंटर की सीमा बताता है <Class> एलिमेंट से तय होता है. हर एक के लिए <Class> के अलग-अलग <Allow> चाइल्ड टैग, नीति के लिए दूसरा काउंटर बनाया जा रहा है.

उदाहरण के लिए:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

इस उदाहरण में, कोटा की नीति में दो कोटे काउंटर हैं peak_time और off_peak_time महीने में से.

डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
क्लास

कोटा काउंटर का नाम बताता है.

कोई नहीं ज़रूरी है
सोलर पैनलों की संख्या काउंटर के लिए कोटा की सीमा बताता है. कोई नहीं ज़रूरी है

&lt;Interval&gt; एलिमेंट

वैल्यू के तौर पर, 1, 2, 5, 60 वगैरह जैसे पूर्णांक का इस्तेमाल करें. समय तय करने के लिए, आप TimeUnit (मिनट, घंटा, दिन, हफ़्ता या महीना) तय करते हैं वह अवधि जिसके दौरान Edge कोटा इस्तेमाल की गणना करता है.

उदाहरण के लिए, 24 का Interval, hour के TimeUnit का मतलब है कि कोटा का आकलन 24 घंटे में किया जाता है.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: ज़रूरी है
टाइप: पूर्णांक

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ

इसका इस्तेमाल किसी ऐसे फ़्लो वैरिएबल के बारे में बताने के लिए करें जिसमें किसी कोटा. ref को किसी खास इंटरवल पर प्राथमिकता दी जाती है वैल्यू. अगर रेफ़रंस और वैल्यू, दोनों के बारे में बताया गया है, तो रेफ़रंस को प्राथमिकता दी जाती है. अगर रनटाइम के दौरान ref का समाधान नहीं होता है, तो वैल्यू का इस्तेमाल किया जाता है.

कोई नहीं वैकल्पिक

&lt;TimeUnit&gt; एलिमेंट

कोटा पर लागू समय की इकाई तय करने के लिए इसका इस्तेमाल करें.

उदाहरण के लिए, 24 का Interval, hour के TimeUnit का मतलब है कि कोटा का आकलन 24 घंटे में किया जाता है.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: ज़रूरी है
टाइप:

स्ट्रिंग. minute, hour, और day में से चुनें week या month.

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ किसी कोटा के लिए समय इकाई वाले फ़्लो वैरिएबल को तय करने के लिए इसका इस्तेमाल करें. ref अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है किसी इंटरवल वैल्यू के मुकाबले इसे प्राथमिकता दी जाती है. अगर ref से रनटाइम पर रिज़ॉल्व नहीं किया जाता, तो वैल्यू का इस्तेमाल किया जाता है. कोई नहीं वैकल्पिक

&lt;StartTime&gt; एलिमेंट

जब type को calendar, पर सेट किया जाता है, तो तारीख का पता चलता है और वह समय जब कोटा काउंटर की गिनती शुरू होगी, भले ही कोई अनुरोध हुआ हो भी मिलता है.

अगर type को साफ़ तौर पर सेट किया गया है, तो आपको एक खास StartTime देना होगा को calendar, तक आप किसी फ़्लो वैरिएबल के रेफ़रंस का इस्तेमाल नहीं कर सकते, अगर आपने जब कोई type मान सेट नहीं होता है, तो StartTime मान सेट होता है, फिर आपको गड़बड़ी.

उदाहरण के लिए:

<StartTime>2017-7-16 12:00:00</StartTime>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: तब ज़रूरी है, जब type को calendar पर सेट किया गया हो.
टाइप:

ISO 8601 में स्ट्रिंग तारीख और समय फ़ॉर्मैट.

<डिस्ट्रिब्यूटेड> एलिमेंट

Edge को इंस्टॉल करने पर, अनुरोधों को प्रोसेस करने के लिए एक या एक से ज़्यादा मैसेज प्रोसेसर का इस्तेमाल किया जा सकता है. इसे सेट करें true एलिमेंट का इस्तेमाल करें, ताकि यह बताया जा सके कि नीति के तहत एक सेंट्रल और इसे सभी मैसेज प्रोसेसर में लगातार सिंक करते रहें. मैसेज प्रोसेस करने वाली कंपनी उपलब्धता ज़ोन और/या क्षेत्रों में हो सकती है.

अगर आप false की डिफ़ॉल्ट वैल्यू का इस्तेमाल करते हैं, तो हो सकता है कि आप कोटा को पार कर जाएं, क्योंकि मैसेज प्रोसेसर के लिए, मैसेज की संख्या शेयर नहीं की जाती:

<Distributed>true</Distributed>

काउंटर को सिंक करने और हर अनुरोध पर उसे अपडेट करने की गारंटी के लिए, <Distributed> और <Synchronous> को 'सही' के तौर पर सेट करें:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
डिफ़ॉल्ट: गलत
मौजूदगी: वैकल्पिक
टाइप: बूलियन

&lt;Synchronous&gt; एलिमेंट

डिस्ट्रिब्यूट किए गए कोटा काउंटर को सिंक्रोनस रूप से अपडेट करने के लिए, true पर सेट करें. यह इसका मतलब है कि काउंटर में अपडेट, अनुरोध पर कोटा की जांच के साथ ही हो जाता है को एपीआई में बदलें. अगर ज़रूरी हो कि आप किसी एपीआई को अनुमति न दें, तो उसे true पर सेट करें कॉल की संख्या बढ़ाने के लिए किया जा सकता है.

कोटा काउंटर को एसिंक्रोनस रूप से अपडेट करने के लिए false पर सेट करें. इसका मतलब है हो सकता है कि कोटा से ज़्यादा एपीआई कॉल का अनुरोध किया जा सके. यह प्रोसेस, सेंट्रल रिपॉज़िटरी में कोटा काउंटर एसिंक्रोनस रूप से अपडेट होता है. हालाँकि, आपका चेहरा नहीं दिखेगा सिंक्रोनस अपडेट से जुड़े परफ़ॉर्मेंस पर पड़ने वाला संभावित असर.

डिफ़ॉल्ट एसिंक्रोनस अपडेट इंटरवल 10 सेकंड का है. इसका इस्तेमाल करें AsynchronousConfiguration एलिमेंट का इस्तेमाल करके, इस एसिंक्रोनस व्यवहार को कॉन्फ़िगर किया जा सकता है.

<Synchronous>false</Synchronous>
डिफ़ॉल्ट: गलत
मौजूदगी: वैकल्पिक
टाइप: बूलियन

&lt;AsynchronousConfiguration&gt; एलिमेंट

यह नीति, डिस्ट्रिब्यूट किए गए कोटा काउंटर के बीच सिंक करने के इंटरवल को कॉन्फ़िगर करती है. ऐसा तब होता है, जब यह नीति लागू होती है कॉन्फ़िगरेशन एलिमेंट <Synchronous> या तो मौजूद नहीं है या मौजूद नहीं है. साथ ही, यह सेट है false तक.

आप एक समयावधि या मैसेज की गिनती के बाद, सिंक करने के लिए नीचे दिए गए दोनों में से किसी एक का इस्तेमाल करके, SyncIntervalInSeconds या SyncMessageCount चाइल्ड एलिमेंट. ये म्यूचुअली एक्सक्लूसिव होते हैं. उदाहरण के लिए,

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

या

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
डिफ़ॉल्ट: सिंक इंटरवलइनसेकंड = 10 सेकंड
मौजूदगी: ज़रूरी नहीं; <Synchronous> के सेट होने पर अनदेखा किया जाता है true.
टाइप:

परिसर

&lt;AsynchronousConfiguration&gt;/&lt;SyncIntervalInSeconds&gt; एलिमेंट

इसका इस्तेमाल उस डिफ़ॉल्ट व्यवहार को ओवरराइड करने के लिए करें जिसमें 10 सेकंड का इंटरवल है.

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

सिंक इंटरवल की अवधि 10 सेकंड से ज़्यादा होनी चाहिए, जैसा कि सीमाएं विषय.

डिफ़ॉल्ट: 10
मौजूदगी: वैकल्पिक
टाइप:

पूर्णांक

&lt;AsynchronousConfiguration&gt;/&lt;SyncMessageCount&gt; एलिमेंट

यह नीति, कोटे के बीच सभी Apigee मैसेज प्रोसेसर में अनुरोधों की संख्या तय करती है अपडेट.

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>

इस उदाहरण से पता चलता है कि हर Apigee के लिए कोटा की संख्या, हर पांच अनुरोध पर अपडेट की जाती है Edge मैसेज प्रोसेसर.

डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप:

पूर्णांक

&lt;Identifier&gt; एलिमेंट

यूनीक बनाने के लिए नीति को कॉन्फ़िगर करने के लिए, <Identifier> एलिमेंट का इस्तेमाल करें की गणना कर सकते हैं.

किसी फ़्लो वैरिएबल की बताई गई विशेषताओं के लिए, यूनीक काउंटर बनाए जा सकते हैं. उदाहरण के लिए, किसी खास डेवलपर का कोटा जोड़ने के लिए, डेवलपर के ईमेल पते का इस्तेमाल किया जा सकता है. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए कोटा की पहचान करने के लिए विविध प्रकार के वैरिएबल, चाहे आप कस्टम वैरिएबल का उपयोग कर रहे हों या पहले से तय किए गए वैरिएबल, जैसे कि एपीआई पासकोड की पुष्टि करने की नीति में उपलब्ध वैरिएबल. इन्हें भी देखें वैरिएबल रेफ़रंस.

अगर इस एलिमेंट का इस्तेमाल नहीं किया जाता, तो यह नीति तय करना है.

इस एलिमेंट के बारे में, नीचे दी गई Apigee कम्यूनिटी पोस्ट में भी जानकारी दी गई है: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप:

स्ट्रिंग

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ

एक फ़्लो वैरिएबल तय करता है, जो अनुरोध के लिए इस्तेमाल किए जाने वाले काउंटर की पहचान करता है. कॉन्टेंट बनाने आइडेंटिफ़ायर कोई एचटीटीपी हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर या मैसेज का कॉन्टेंट हो सकता है जो हर ऐप्लिकेशन, ऐप्लिकेशन के उपयोगकर्ता, ऐप्लिकेशन डेवलपर, एपीआई प्रॉडक्ट या विशेषता.

खास तरह से ऐप्लिकेशन की पहचान करने के लिए, आम तौर पर <Identifier> का इस्तेमाल किया जाता है client_id. एपीआई पासकोड का दूसरा नाम client_id भी है, होता है, जो किसी ऐप्लिकेशन के लिए तब जनरेट होता है, जब वह किसी संगठन में Apigee Edge. अगर आपने एपीआई पासकोड या OAuth चालू किया है, तो इस आइडेंटिफ़ायर का इस्तेमाल किया जा सकता है अनुमति नीतियां शामिल करें.

कुछ मामलों में, कोटा की सेटिंग फिर से हासिल की जानी चाहिए, अगर: client_id उपलब्ध होता है, जैसे कि जब कोई सुरक्षा नीति मौजूद न हो. तय सीमा में इन स्थितियों में, सही एपीआई को वापस पाने के लिए, ऐक्सेस इकाई की नीति का इस्तेमाल किया जा सकता है फिर ExtractVariables का इस्तेमाल करके वैल्यू एक्सट्रैक्ट करें और फिर एक्सट्रैक्ट किए गए कोटा नीति में कॉन्टेक्स्ट वैरिएबल के बारे में ज़्यादा जानें. ज़्यादा जानकारी के लिए, ऐक्सेस इकाई देखें नीति पढ़ें.

लागू नहीं वैकल्पिक

&lt;MessageWeight&gt; एलिमेंट

हर मैसेज को असाइन किया गया वज़न बताने के लिए इसका इस्तेमाल करें. संदेश का महत्व बढ़ाने के लिए इसका उपयोग करें उदाहरण के लिए, अन्य लोगों की तुलना में ज़्यादा कंप्यूटेशनल रिसॉर्स इस्तेमाल करने का अनुरोध करने वाले मैसेज.

उदाहरण के लिए, अगर आपको पीओएसटी मैसेज को "भारी" के तौर पर दो बार गिनना है या महंगा, जैसा कि GET मैसेज. इसलिए, आप किसी पीओएसटी के लिए MessageWeight को 2 और डाउनलोड करें. आपके पास MessageWeight को 0 पर सेट करने का भी विकल्प होता है. इससे अनुरोध पर कोई कार्रवाई नहीं की जाती का असर नहीं पड़ता. इस उदाहरण में, अगर कोटा 10 मैसेज प्रति मिनट है और पीओएसटी अनुरोधों के लिए MessageWeight 2 है, तो कोटा किसी भी 10 मिनट के अंतराल में 5 पोस्ट अनुरोधों की अनुमति देता है. कोई अन्य अनुरोध, पीओएसटी या जीईटी, आपके पास इस विकल्प को चुनने का विकल्प होता है.

MessageWeight को दिखाने वाली वैल्यू, फ़्लो के ज़रिए तय की जानी चाहिए वैरिएबल होता है. इसे एचटीटीपी हेडर, क्वेरी पैरामीटर, एक्सएमएल या JSON अनुरोध से भी लिया जा सकता है पेलोड या किसी अन्य फ़्लो वैरिएबल का इस्तेमाल किया जा सकता है. उदाहरण के लिए, आप इसे weight:

<MessageWeight ref="message_weight"/>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप:

पूर्णांक

फ़्लो वैरिएबल

कोटा नीति के तहत, पहले से तय किए गए इन फ़्लो वैरिएबल में जानकारी अपने-आप भर जाती है लागू करता है. फ़्लो वैरिएबल के बारे में ज़्यादा जानकारी के लिए, वैरिएबल रेफ़रंस देखें.

वैरिएबल टाइप अनुमतियां ब्यौरा
ratelimit.{policy_name}.allowed.count ज़्यादा समय के लिए रीड-ओनली अनुमति वाली कोटा संख्या दिखाता है
ratelimit.{policy_name}.used.count ज़्यादा समय के लिए रीड-ओनली यह फ़ंक्शन किसी कोटा इंटरवल में इस्तेमाल किया गया मौजूदा कोटा दिखाता है
ratelimit.{policy_name}.available.count ज़्यादा समय के लिए रीड-ओनली यह फ़ंक्शन किसी कोटा इंटरवल में उपलब्ध कोटा की संख्या दिखाता है
ratelimit.{policy_name}.exceed.count ज़्यादा समय के लिए रीड-ओनली कोटा पार होने के बाद, 1 नतीजा दिखाता है.
ratelimit.{policy_name}.total.exceed.count ज़्यादा समय के लिए रीड-ओनली कोटा पार होने के बाद, 1 नतीजा दिखाता है.
ratelimit.{policy_name}.expiry.time ज़्यादा समय के लिए रीड-ओनली

मिलीसेकंड में UTC समय देता है, जो तय करता है कि कोटा कब खत्म होगा और कब नया होगा कोटा अंतराल शुरू होता है.

कोटा की नीति का टाइप rollingwindow होने पर, यह वैल्यू मान्य नहीं होगी क्योंकि कोटा अंतराल कभी खत्म नहीं होता.

रेट लिमिट.{policy_name}.आइडेंटिफ़ायर स्ट्रिंग रीड-ओनली यह नीति से अटैच किया गया (क्लाइंट) आइडेंटिफ़ायर दिखाता है
रेट लिमिट.{policy_name}.क्लास स्ट्रिंग रीड-ओनली क्लाइंट आइडेंटिफ़ायर से जुड़ी क्लास दिखाता है
ratelimit.{policy_name}.class.allowed.count ज़्यादा समय के लिए रीड-ओनली क्लास में तय की गई कोटा की संख्या बताता है
ratelimit.{policy_name}.class.used.count ज़्यादा समय के लिए रीड-ओनली किसी क्लास में इस्तेमाल किया गया कोटा दिखाता है
ratelimit.{policy_name}.class.available.count ज़्यादा समय के लिए रीड-ओनली यह फ़ंक्शन क्लास में उपलब्ध कोटे की संख्या दिखाता है
ratelimit.{policy_name}.class.exceed.count ज़्यादा समय के लिए रीड-ओनली यह फ़ंक्शन ऐसे अनुरोधों की संख्या दिखाता है जो क्लास में तय सीमा से ज़्यादा हो जाते हैं वर्तमान कोटा अंतराल
ratelimit.{policy_name}.class.total.exceed.count ज़्यादा समय के लिए रीड-ओनली यह फ़ंक्शन सभी तरह के अनुरोधों की संख्या, क्लास की तय सीमा से ज़्यादा होने पर, ऐसे अनुरोधों की कुल संख्या दिखाता है कोटा इंटरवल, सभी के लिए class.exceed.count का योग है कोटा इंटरवल.
रेट लिमिट.{policy_name}.failed बूलियन रीड-ओनली

इससे पता चलता है कि नीति लागू नहीं हुई (सही या गलत).

गड़बड़ी का रेफ़रंस

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 Occurs if the <Interval> element is not defined within the Quota policy. This element is mandatory and used to specify the interval of time applicable to the quota. The time interval can be minutes, hours, days, weeks, or months as defined with the <TimeUnit> element.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 Occurs if the <TimeUnit> element is not defined within the Quota policy. This element is mandatory and used to specify the unit of time applicable to the quota. The time interval can be in minutes, hours, days, weeks, or months.
policies.ratelimit.InvalidMessageWeight 500 Occurs if the value of the <MessageWeight> element specified through a flow variable is invalid (a non-integer value).
policies.ratelimit.QuotaViolation 500 The quota limit was exceeded. N/A

Deployment errors

Error name Cause Fix
InvalidQuotaInterval If the quota interval specified in the <Interval> element is not an integer, then the deployment of the API proxy fails. For example, if the quota interval specified is 0.1 in the <Interval> element, then the deployment of the API proxy fails.
InvalidQuotaTimeUnit If the time unit specified in the <TimeUnit> element is unsupported, then the deployment of the API proxy fails. The supported time units are minute, hour, day, week, and month.
InvalidQuotaType If the type of the quota specified by the type attribute in the <Quota> element is invalid, then the deployment of the API proxy fails. The supported quota types are default, calendar, flexi, and rollingwindow.
InvalidStartTime If the format of the time specified in the <StartTime> element is invalid, then the deployment of the API proxy fails. The valid format is yyyy-MM-dd HH:mm:ss, which is the ISO 8601 date and time format. For example, if the time specified in the <StartTime> element is 7-16-2017 12:00:00 then the deployment of the API proxy fails.
StartTimeNotSupported If the <StartTime> element is specified whose quota type is not calendar type, then the deployment of the API proxy fails. The <StartTime> element is supported only for the calendar quota type. For example, if the type attribute is set to flexi or rolling window in the <Quota> element, then the deployment of the API proxy fails.
InvalidTimeUnitForDistributedQuota If the <Distributed> element is set to true and the <TimeUnit> element is set to second then the deployment of the API proxy fails. The timeunit second is invalid for a distributed quota.
InvalidSynchronizeIntervalForAsyncConfiguration If the value specified for the <SyncIntervalInSeconds> element within the <AsynchronousConfiguration> element in a Quota policy is less than zero, then the deployment of the API proxy fails.
InvalidAsynchronizeConfigurationForSynchronousQuota If the value of the <AsynchronousConfiguration> element is set to true in a Quota policy, which also has asynchronous configuration defined using the <AsynchronousConfiguration> element, then the deployment of the API proxy fails.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "QuotaViolation"
ratelimit.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. ratelimit.QT-QuotaPolicy.failed = true

Example error response

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.QuotaViolation"
      },
      "faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default"
   }
}

Example fault rule

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

स्कीमा

मिलते-जुलते विषय

रीसेट कोटा की नीति

SpikeArrest नीति

तुलना करना कोटा, स्पाइक अरेस्ट, और एक साथ दर की सीमा से जुड़ी नीतियां