SpikeArest की नीति

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

Edge के यूज़र इंटरफ़ेस (यूआई) में स्पाइक ऐरेस्ट का आइकॉन

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

<SpikeArrest> एलिमेंट

स्पाइक अरेस्ट की नीति के बारे में बताता है.

डिफ़ॉल्ट वैल्यू नीचे डिफ़ॉल्ट नीति टैब देखें
क्या यह ज़रूरी है? वैकल्पिक
समस्या कॉम्प्लेक्स ऑब्जेक्ट
पैरंट एलिमेंट लागू नहीं
चाइल्ड एलिमेंट <Identifier>
<MessageWeight>
<Rate> (ज़रूरी है)
<UseEffectiveCount>

सिंटैक्स

<SpikeArrest> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <DisplayName>display_name</DisplayName>
  <Properties/>
  <Identifier ref="flow_variable"/>
  <MessageWeight ref="flow_variable"/>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

डिफ़ॉल्ट नीति

यहां दिए गए उदाहरण में, Edge यूज़र इंटरफ़ेस (यूआई) में अपने फ़्लो में ट्रैफ़िक में अचानक बढ़ोतरी को रोकने की नीति जोड़ने पर, डिफ़ॉल्ट सेटिंग दिख रही हैं:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest-1">
  <DisplayName>Spike Arrest-1</DisplayName>
  <Properties/>
  <Identifier ref="request.header.some-header-name"/>
  <MessageWeight ref="request.header.weight"/>
  <Rate>30ps</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

This element has the following attributes that are common to all policies:

Attribute Default Required? Description
name N/A Required

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

continueOnError false Optional Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails.
enabled true Optional Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow.
async   false Deprecated This attribute is deprecated.

उदाहरण

यहां दिए गए उदाहरणों में, स्पाइक अरेस्ट की नीति का इस्तेमाल करने के कुछ तरीके बताए गए हैं:

उदाहरण 1

यहां दिए गए उदाहरण में, दर को हर सेकंड पांच पर सेट किया गया है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>5ps</Rate>
</SpikeArrest>

इस नीति के तहत, हर 200 मिलीसेकंड (1000/5) में एक अनुरोध करने की अनुमति है.

उदाहरण 2

इस उदाहरण में, दर को हर मिनट 300 पर सेट किया गया है:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

असरदार दर 300pm है. इसका मतलब है कि हर 200 मिलीसेकंड में बकेट में एक नया टोकन जोड़ा जाता है. बकेट का साइज़ हमेशा messagesPerPeriod के 10% के तौर पर कॉन्फ़िगर किया जाता है. इसलिए, messagesPerPeriod के 300 होने पर, बकेट का साइज़ 30 टोकन होगा.

उदाहरण 3

नीचे दिए गए उदाहरण में, हर मिनट 12 अनुरोध करने की सीमा तय की गई है. इसका मतलब है कि हर पांच सेकंड या 60/12 में एक अनुरोध किया जा सकता है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
</SpikeArrest>

इसके अलावा, <MessageWeight> एलिमेंट में कस्टम वैल्यू (weight हेडर) को स्वीकार किया जाता है. इससे, खास ऐप्लिकेशन या क्लाइंट के लिए मैसेज की अहमियत में बदलाव होता है. इससे, <Identifier> एलिमेंट की मदद से पहचान की गई इकाइयों के लिए, ट्रॉथलिंग पर ज़्यादा कंट्रोल मिलता है.

उदाहरण 4

इस उदाहरण में, Spike Arrest को request.header.runtime_rate फ़्लो वैरिएबल के तौर पर पास किए गए अनुरोध के ज़रिए सेट की गई रनटाइम वैल्यू ढूंढने का निर्देश दिया गया है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate ref="request.header.runtime_rate" />
</SpikeArrest>

फ़्लो वैरिएबल की वैल्यू, intpm या intps के तौर पर होनी चाहिए.

इस उदाहरण को आज़माने के लिए, इस तरह का अनुरोध करें:

curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'

चाइल्ड एलिमेंट का रेफ़रंस

इस सेक्शन में, <SpikeArrest> के चाइल्ड एलिमेंट के बारे में बताया गया है.

<DisplayName>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value n/a
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

Example

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

The <DisplayName> element has no attributes or child elements.

<Identifier>

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

अनुरोध को कम करने की सुविधा को बेहतर तरीके से कंट्रोल करने के लिए, <MessageWeight> एलिमेंट के साथ इस्तेमाल करें.

अगर <Identifier> एलिमेंट को खाली छोड़ा जाता है, तो उस एपीआई प्रॉक्सी में सभी अनुरोधों के लिए, एक दर सीमा लागू की जाती है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <SpikeArrest>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Identifier ref="flow_variable"/>
</SpikeArrest>
        

उदाहरण 1

यहां दिए गए उदाहरण में, हर डेवलपर आईडी के लिए स्पाइक अरेस्ट की नीति लागू की गई है:

<SpikeArrest name="Spike-Arrest-1">
  <Identifier ref="developer.id"/>
  <Rate>42pm</Rate/>
</SpikeArrest>

नीचे दी गई टेबल में <Identifier> के एट्रिब्यूट के बारे में बताया गया है:

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

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

<MessageWeight>

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

किसी खास क्लाइंट या ऐप्लिकेशन के अनुरोधों को और कम करने के लिए, <Identifier> के साथ इस्तेमाल करें.

उदाहरण के लिए, अगर स्पाइक अरेस्ट <Rate> 10pm है और कोई ऐप्लिकेशन 2 के वेट के साथ अनुरोध सबमिट करता है, तो उस क्लाइंट से हर मिनट में सिर्फ़ पांच मैसेज भेजने की अनुमति है, क्योंकि हर अनुरोध की गिनती दो के तौर पर की जाती है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? वैकल्पिक
समस्या पूर्णांक
पैरंट एलिमेंट <SpikeArrest>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <MessageWeight ref="flow_variable"/>
</SpikeArrest>

उदाहरण 1

नीचे दिए गए उदाहरण में, हर मिनट 12 अनुरोध करने की सीमा तय की गई है. इसका मतलब है कि हर पांच सेकंड या 60/12 में एक अनुरोध किया जा सकता है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
</SpikeArrest>

इस उदाहरण में, <MessageWeight> एक कस्टम वैल्यू (अनुरोध में weight हेडर) स्वीकार करता है, जो खास क्लाइंट के लिए मैसेज की अहमियत में बदलाव करता है. इससे, <Identifier> एलिमेंट की मदद से पहचान की गई इकाइयों के लिए, ट्रॉथलिंग पर ज़्यादा कंट्रोल मिलता है.

नीचे दी गई टेबल में <MessageWeight> के एट्रिब्यूट के बारे में बताया गया है:

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

<Rate>

यह दर तय करता है कि ट्रैफ़िक के स्पाइक (या बर्स्ट) को किस दर से सीमित किया जाए. इसके लिए, हर मिनट या हर सेकंड के इंटरवल में अनुमति वाले अनुरोधों की संख्या सेट की जाती है. इस एलिमेंट का इस्तेमाल, <Identifier> और <MessageWeight> के साथ भी किया जा सकता है. इससे क्लाइंट से वैल्यू स्वीकार करके, रनटाइम के दौरान ट्रैफ़िक को आसानी से कम किया जा सकता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? ज़रूरी है
समस्या पूर्णांक
पैरंट एलिमेंट <SpikeArrest>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

किराये की जानकारी देने के लिए, इनमें से कोई एक तरीका अपनाएं:

  • स्टैटिक दर, जिसे <Rate> एलिमेंट के मुख्य हिस्से के तौर पर तय किया जाता है
  • वैरिएबल की वैल्यू, जिसे क्लाइंट पास कर सकता है; ref एट्रिब्यूट का इस्तेमाल करके, फ़्लो वैरिएबल के नाम की पहचान करें
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

किराये की मान्य वैल्यू (वैरिएबल वैल्यू या एलिमेंट के मुख्य हिस्से में तय की गई), इस फ़ॉर्मैट के मुताबिक होनी चाहिए:

  • intps (प्रति सेकंड अनुरोधों की संख्या, मिलीसेकंड के इंटरवल में बदली गई)
  • intpm (हर मिनट के अनुरोधों की संख्या, सेकंड के इंटरवल में बदली गई)

int की वैल्यू, पॉज़िटिव और शून्य से ज़्यादा होनी चाहिए.

उदाहरण 1

नीचे दिए गए उदाहरण में, दर को हर सेकंड पांच अनुरोधों पर सेट किया गया है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>5ps</Rate>
</SpikeArrest>

इस नीति के तहत, हर 200 मिलीसेकंड (1000/5) में एक अनुरोध करने की अनुमति है.

उदाहरण 2

इस उदाहरण में, दर को हर मिनट 12 अनुरोधों पर सेट किया गया है:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

इस उदाहरण में दी गई नीति के हिसाब से, हर पांच सेकंड (60/12) में एक अनुरोध किया जा सकता है.

नीचे दी गई टेबल में <Rate> के एट्रिब्यूट के बारे में बताया गया है:

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

JavaScript नीति या AssignMessage नीति का इस्तेमाल करके, कस्टम वैरिएबल का भी इस्तेमाल किया जा सकता है.

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

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

<Rate ref="request.header.custom_rate">1pm</Rate>

इस उदाहरण में, अगर क्लाइंट "custom_rate" हेडर नहीं भेजता है, तो सभी क्लाइंट के लिए एपीआई प्रॉक्सी की दर, हर मिनट में एक अनुरोध होगी. अगर क्लाइंट "custom_rate" हेडर पास करता है, तो प्रॉक्सी पर मौजूद सभी क्लाइंट के लिए, अनुरोध की दर की सीमा हर सेकंड 10 अनुरोध हो जाती है. ऐसा तब तक होता है, जब तक "custom_rate" हेडर के बिना कोई अनुरोध नहीं भेजा जाता.

अलग-अलग तरह के क्लाइंट के लिए कस्टम किराये लागू करने के लिए, अनुरोधों को ग्रुप करने के लिए <Identifier> का इस्तेमाल किया जा सकता है.

अगर आपने ref के लिए कोई वैल्यू दी है, लेकिन <Rate> एलिमेंट के मुख्य हिस्से में दर सेट नहीं की है और क्लाइंट कोई वैल्यू पास नहीं करता है, तो स्पाइक अरेस्ट नीति से गड़बड़ी का मैसेज मिलता है.

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

<UseEffectiveCount>

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

सिंटैक्स

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

उदाहरण 1

यहां दिए गए उदाहरण में, <UseEffectiveCount> को 'सही' पर सेट किया गया है:

<SpikeArrest name='Spike-Arrest-1'>
  <Rate>40ps</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

<UseEffectiveCount> एलिमेंट का इस्तेमाल करना ज़रूरी नहीं है. अगर स्पाइक अरेस्ट की नीति से एलिमेंट को हटा दिया जाता है, तो डिफ़ॉल्ट वैल्यू false होती है.

डिफ़ॉल्ट वैल्यू गलत
क्या यह ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <SpikeArrest>
चाइल्ड एलिमेंट कोई नहीं

नीचे दी गई टेबल में, <UseEffectiveCount> एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
ref उस वैरिएबल की पहचान करता है जिसमें <UseEffectiveCount> की वैल्यू होती है. यह कोई भी फ़्लो वैरिएबल हो सकता है, जैसे कि एचटीटीपी क्वेरी पैरामीटर, हेडर या मैसेज बॉडी का कॉन्टेंट. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें. JavaScript नीति या AssignMessage नीति का इस्तेमाल करके भी कस्टम वैरिएबल सेट किए जा सकते हैं. लागू नहीं वैकल्पिक

<UseEffectiveCount> का असर, इसकी वैल्यू पर निर्भर करता है:

  • true: किसी पॉड में मौजूद एमपी की संख्या को, <Rate> से भाग देने पर, एमपी के स्पाइक रेट की सीमा मिलती है. कुल सीमा, <Rate> की वैल्यू है. जब एमपी डाइनैमिक तौर पर जोड़े (या हटाए) जाते हैं, तो उनके लिए स्पाइक रेट की अलग-अलग सीमाएं बढ़ जाएंगी (या कम हो जाएंगी). हालांकि, कुल सीमा में कोई बदलाव नहीं होगा.
  • false (अगर यह वैल्यू नहीं दी जाती है, तो यह डिफ़ॉल्ट वैल्यू होती है): हर एमपी के स्पाइक रेट की सीमा, बस उसकी <Rate> वैल्यू होती है. कुल सीमा, सभी एमपी की दरों का योग होती है. एमपी जोड़ने (या हटाने) पर, उनके स्पाइक रेट की अलग-अलग सीमाएं पहले जैसी ही रहेंगी. हालांकि, कुल सीमा बढ़ जाएगी (या घट जाएगी).

नीचे दी गई टेबल में, हर एमपी की दर की सीमा पर <UseEffectiveCount> के असर को दिखाया गया है:

<UseEffectiveCount> की वैल्यू
false false false true true true
# of MPs 8 4 2 8 4 2
<Rate> की वैल्यू 10 10 10 40 40 40
हर एमपी के लिए लागू दर 10 10 10 5 10 20
एग्रीगेट की सीमा 80 40 20 40* 40* 40*
* यह <Rate> के बराबर है.

इस उदाहरण में, ध्यान दें कि जब एमपी की संख्या 4 से घटकर 2 हो जाती है और <UseEffectiveCount> false होता है, तो हर एमपी के लिए असरदार दर एक जैसी (10 पर) रहती है. हालांकि, जब <UseEffectiveCount> true है, तो हर एमपी के लिए असरदार दर, एमपी की संख्या 4 से घटकर 2 होने पर, 10 से 20 हो जाती है.

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

जब स्पाइक अरेस्ट की नीति लागू होती है, तो नीचे दिया गया फ़्लो वैरिएबल पॉप्युलेट होता है:

वैरिएबल टाइप अनुमति ब्यौरा
ratelimit.policy_name.failed बूलियन रीड-ओनली इससे पता चलता है कि नीति लागू हुई या नहीं (true या false).

ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.

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

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.FailedToResolveSpikeArrestRate 500 This error occurs if the reference to the variable containing the rate setting within the <Rate> element cannot be resolved to a value within the Spike Arrest policy. This element is mandatory and used to specify the spike arrest rate in the form of intpm or intps.
policies.ratelimit.InvalidMessageWeight 500 This error occurs if the value specified for the <MessageWeight> element through a flow variable is invalid (a non-integer value).
policies.ratelimit.SpikeArrestViolation 429

The rate limit was exceeded.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidAllowedRate If the spike arrest rate specified in the <Rate> element of the Spike Arrest Policy is not an integer or if the rate does not have ps or pm as a suffix, then the deployment of the API proxy fails.

Fault variables

These variables are set when a runtime error occurs. 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 "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. ratelimit.SA-SpikeArrestPolicy.failed = true

Example error response

Shown below is an example error response:

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.SpikeArrestViolation"
      },
      "faultstring":"Spike arrest violation. Allowed rate : 10ps"
   }
}

Example fault rule

Shown below is an example fault rule to handle a SpikeArrestViolation fault:

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

कोटा या स्पाइक रोकने की नीति से तय की गई दर की सीमा से ज़्यादा अनुरोध करने पर, एचटीटीपी का मौजूदा स्टेटस कोड 429 (ज़्यादा अनुरोध) होता है. एचटीटीपी स्टेटस कोड को 500 (इंटरनल सर्वर गड़बड़ी) में बदलने के लिए, features.isHTTPStatusTooManyRequestEnabled प्रॉपर्टी को false पर सेट करें. इसके लिए, Update organization properties API का इस्तेमाल करें.

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

curl -u email:password -X POST -H "Content-type:application/xml" http://api.enterprise.apigee.com/v1/organizations/myorg -d \
"<Organization type="trial" name="MyOrganization">
    <Properties>
        <Property name="features.isHTTPStatusTooManyRequestEnabled">true</Property>
        . . .
    </Properties>
</Organization>"

स्कीमा

हर नीति टाइप को एक्सएमएल स्कीमा (.xsd) से तय किया जाता है. रेफ़रंस के लिए, GitHub पर नीति स्कीमा उपलब्ध हैं.

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