2017-12-13 1 views
0

Ich benutze das kostenlose Abonnement Cloudant, so konnte ich nur 5 Abfrage pro Sekunde tun.Cloudant 429 zu viele Modell

Ich habe auch 6 Modelle mit 6 repos und bei der Initialisierung der repos nenne ich create:

@PostConstruct 
    private void initRepo() { 
     db = dbManager.getDatabase(); 
     List<Index> indexes = db.listIndices(); 
     String indexName = String.format("index_%s", getModelClass().getSimpleName()); 
     if (indexes != null && !indexes.stream().filter(c -> c.getName().equals(indexName)).findFirst().isPresent()) { 
      Log.debug("Creating index for " + indexName); 
      db.createIndex(indexName, indexName, null, 
        getIndexFields() != null ? getIndexFields().toArray(new IndexField[0]) : null); 
     } 
    } 

Mit mvn test oder mvn install alle 6 initRepo sind aufgerufen, damit ich 429.

Could Ich sage Frühling, um 5 Sekunden zu warten, bevor ich einige Repos initialisiere? Oder gibt es eine Best Practice, es zu tun?

Antwort

2

Hier sind einige Optionen:

1) Queue Ihre Cloudant Operationen und verbrauchen nur Elemente aus der Warteschlange zu Rate weniger als die Rate-Limit (etwa 4 pro Sekunde)

2) Rüsten Sie Ihren Cloudant Service zu einem großzügigeren Plan

3) Die Java-Cloudant-Bibliothek verfügt über die Option 429ReplayInterceptor zu verwenden. Dadurch werden API-Aufrufe wiederholt, die eine 429-Antwort mit exponentiellem Back-Off erhalten.

Verwandte Themen