感謝@catcherwong 的文章激勵我最終寫出了這個文件
Ocelot支援上游的請求限制,以便您的下游服務不會過載。 此功能是由GitHub上的@geffzhang新增! 非常感謝。
好了,為了讓ReRoute獲得流量限制,你需要新增下面的json到ReRoute中。
"RateLimitOptions": {
"ClientWhitelist": [],
"EnableRateLimiting": true,
"Period": "1s",
"PeriodTimespan": 1,
"Limit": 1
}
ClientWhitelist - 是一個包含客戶端白名單列表的陣列。這意味著在白名單裡的客戶端不受流量限制的影響。
EnableRateLimiting - 該值指定流量限制是否開啟。
Period - 該值指定時間段,例如1s,5m,1h,1d等。
PeriodTimespan - 該值指定我們可以在一定的秒數後重試。
Limit - 該值指定一個客戶端可以在定義的時間段(Period)內允許的最大請求數。
您還可以在ocelot.json的GlobalConfiguration部分中設定以下內容
"RateLimitOptions": {
"DisableRateLimitHeaders": false,
"QuotaExceededMessage": "Customize Tips!",
"HttpStatusCode": 999,
"ClientIdHeader" : "Test"
}
DisableRateLimitHeaders - 該值指定是否禁用X-Rate-Limit和Rety-After頭。
QuotaExceededMessage - 該值指定超出限制時返回的訊息。
HttpStatusCode - 該值指定超出限制時返回的HTTP狀態程式碼。
ClientIdHeader - 允許您指定應該用於標識客戶端的頭。 預設是“ClientId”