Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
InvalidMessageWeight
Hata kodu
policies.ratelimit.InvalidMessageWeight
Hata yanıtı gövdesi
{ "fault": {jdoe "faultstring": "Invalid message weight value [invalid_value]", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Örnek Hata Mesajı
{ "fault": { "faultstring": "Invalid message weight value 1.5", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Neden
Bu hata, bir akış değişkeni aracılığıyla <MessageWeight>
öğesi için belirtilen değer geçersizse (tam sayı olmayan bir değer) ortaya çıkar.
Örneğin, <MessageWeight>
için akış değişkeninin değeri belirtiliyorsa
öğesi 1,5 (tam sayı olmayan bir değer) ise hata oluşur.
Teşhis
Çivi'deki
<MessageWeight>
öğesi için kullanılan geçersiz değeri belirleyin Tutuklama politikası. Bu bilgileri şu öğeninfaultstring
öğesinde bulabilirsiniz: hata yanıtı. Örneğin, aşağıdaki hatada,<MessageWeight>
öğesi1.5
:"faultstring": "Invalid message weight value 1.5"
Belirli API Proxy'sinde tüm Spike Arrest politikalarını inceleyin. hatası oluştu. Spike Arrest politikasının yürürlüğe girmesi bir veya daha fazla
<MessageWeight>
öğesi belirtilir.Örneğin, aşağıdaki politika
<MessageWeight>
değerinimessage_weight:
adlı bir akış değişkeni aracılığıyla belirtir.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>
Şu öğenin
<MessageWeight>
öğesinde kullanılan değişkenin değerini belirleyin: belirlenen Spike Sabıka Politikaları. Akış değişkeninin değeri, HTTP üst bilgilerinden, sorgu parametrelerinden, XML veya JSON istek yükü verisinden ayıklanabilir ya da başka bir politikada tanımlanabilir.- Değişkenin ilk olarak tanımlandığı API proxy'sinde kodu bulun.
- Değişkenin tanımlandığı politikayı belirleyip önce değişken değerinin nasıl ayarlandığını kontrol edin.
- Akış değişkeninin değeri, yukarıdaki 1. adımda tanımlanan değerle eşleşiyorsa hatanın nedeni budur.
Örneğin, Spike Arrest'ten önce bir JavaScript politikasının kullanıldığını varsayalım. Politika,
message_weight
değişkenini istek yöntemine göre aşağıda gösterilmiştir:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
message_weight
değişkeninin değerinin1.5
olduğuna dikkat edin. geçersiz (tam sayı olmayan) değer.
Çözünürlük
MessageWeight
öğesinin değerinin geçerli bir değer (tam sayı) olduğundan emin olun
değeri) ekleyebilirsiniz.
Yukarıda gösterilen örneği düzeltmek için JavaScript'teki message_weight
değişkeninin değerini tam sayı olacak şekilde değiştirebilirsiniz:
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
Hata kodu
policies.ratelimit.FailedToResolveSpikeArrestRate
Hata yanıtı gövdesi
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Örnek Hata Mesajı
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Neden
Bu hata, <Rate>
öğesinde ücret ayarını içeren değişkene yapılan referans, Spike Arrest politikasındaki bir değere çözülemiyorsa ortaya çıkar. Bu öğe zorunludur ve şu öğede artış durdurma oranını belirtmek için kullanılır:
{int}pm
veya {int}ps
biçiminde olmalıdır. Örneğin {int}pm
, 500pm
,
yani dakikada 500 çağrı. Benzer şekilde, 10ps
değeri saniye başına 10 arama anlamına gelir.
Teşhis
Hatanın oluştuğu yerde Spike Arrest politikasını ve referans doğru şekilde çözümlenemeyen referanstır. Bu öğelerin her ikisini de değerini girin.
Örneğin, aşağıdaki hata dizesinde politika adı
SpikeArrest_AuthProxy
ve referansrequest.header.rate
:"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"
Başarısız olan Spike Arrest politika XML'inde referans adının kullanılan, hata dizesinde tanımlanan referans adıyla eşleşir (yukarıdaki 1. adım). ** **
Örneğin, aşağıdaki politika referans içeren
öğesini ayarlar request.header.rate
adlı, hata dizesindeki değerle eşleşiyor:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>
Değişkenin, tanımlı olup olmadığını ve değişkenin Çivi Önleme politikası uygulanıyor.
Değişken şunlardan biriyse:
- kapsam dışında (politikanın geçerli olduğu belirli akışta kullanılamaz) yürütüldü) veya
- çözülemiyor (tanımlanmamış)
hatanın nedeni budur.
Yukarıda gösterilen örnekte,
<Rate>
metriğindeki artış durdurma oranının değeri öğesinin rate adlı istek başlığından alınması gerekir. Ancak Edge request.header.rate sorununu çözemez. Bu durum rate başlığı, API isteğinin bir parçası olarak iletilmez.Burada, istek:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"
rate başlığı, isteğin bir parçası olarak iletilmediğinden Yukarıdaki Spike'taki
<Rate>
öğesinde kullanılan request.header.rate Tutuklama politikası tanımlanmamış olduğundan çözülemez. Böylece size hata kodu:policies.ratelimit.FailedToResolveSpikeArrestRate
Çözünürlük
<Rate>
öğesinde başvurulan değişkenin mevcut olduğundan/tanımlandığından emin olun
ve Spike Arrest politikasının geçerli olduğu belirli akışta kullanılabilir.
Yukarıda gösterilen örneği düzeltmek için isteği aşağıda gösterildiği gibi rate başlığını içerecek şekilde değiştirebilirsiniz:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"