2016-07-13 25 views
1

Also habe ich ein Projekt, wo ich die Spring-Data-Redis verwende, um einige Daten zwischenzuspeichern. Die Spring-Data-Redis wird mit Jedis unter Verwendung der Bean-Konfiguration eingerichtet.Verwendung des Parameters JedisPoolConfig * blockWhenExhausted *

Ich suchte nach den JedisPoolConfig Parametern, die geändert werden können, um das Verhalten meines Caching und App zu steuern.

Ich würde gerne die Verwendung der Eigenschaft, blockWhenExhausted, die Teil der konfigurierbaren Eigenschaften ist wissen. Der Standardwert lautet true, welches Verhalten wird dieser Standardwert aufrufen? Wenn der Wert in false geändert wird, welches Verhalten bringt dies?

Antwort

1

Der Wert ändert das Verhalten von GenericObjectPool.borrowObject(long borrowMaxWaitMillis)

ein Objekt Borrow aus dem Pool der spezifischen Wartezeit verwendet, die nur gilt, wenn BaseGenericObjectPool.getBlockWhenExhausted() wahr ist.

Was bedeutet, wenn Sie blockWhenExhausted-false die Zeit mit borrowMaxWaitMillis angegeben eingestellt wird nicht verwendet werden, und wird der borrowObject Anruf blockiert, bis es eine Ruhe jedis Verbindung aus dem Pool zur Verfügung steht.

Wenn der Pool leer ist (keine verfügbaren Leerlauf-Instanzen und keine Fähigkeit, neue zu schaffen), diese Methode wird entweder Block (wenn BaseGenericObjectPool.getBlockWhenExhausted() wahr ist) oder einen NoSuchElementException werfen (wenn BaseGenericObjectPool.getBlockWhenExhausted () falsch ist)

Aber interessanterweise konnte ich nicht sehen, dass die JedisPool Implementierung tatsächlich mit der borrowObject(long borrowMaxWaitMillis) Methode. Ich konnte nur sehen, dass borrowObject (ohne Parameter) während getResource (in the version 3.0.0-SNAPSHOT) aufgerufen wird. Ich bin also nicht sicher, ob das beschriebene Verhalten auch für JedisPool gilt.