Bei zuverlässigen Maps können Sie
ein Wiederholungszeitlimit für Transaktionsanforderungen an WebSphere eXtreme Scale übergeben.
Informationen zu diesem Vorgang
Sie können das Zeitlimit in der Clienteigenschaftendatei oder in einer Sitzung konfigurieren.
Der Sitzungswert überschreibt immer die Einstellung in der Clienteigenschaftendatei.
Wenn ein Wert größer als null definiert wird,
wird die Anforderung so lange wiederholt, bis das Zeitlimit abläuft oder ein permanenter Fehler
auftritt. Ein permanenter Fehler ist beispielsweise eine Ausnahme des Typs DuplicateKeyException.
Der Wert null steht für die Moduseinstellung "fail-fast", d. h.,
eXtreme Scale führt nach keiner Transaktion eine Wiederholung durch.
Zur Laufzeit wird das Transaktionszeitlimit
zusammen mit dem Wiederholungszeitlimit verwendet, um sicherzustellen, dass das Wiederholungszeitlimit
nicht höher ist als das Transaktionszeitlimit.
Es gibt zwei Typen von Transaktionen: Transaktionen mit automatischer Festschreibung und Transaktionen, die explizite
begin- und
commit-Methoden.
Die gültigen Ausnahmen für Wiederholungen sind bei diesen beiden Typen von Transaktionen unterschiedlich:
- Transaktionen, die in einer Sitzung aufgerufen werden, werden bei CORBA-Ausnahmen des Typs
"SystemException" und eXtreme-Scale-Ausnahmen des Typs "TargetNotAvailable" wiederholt.
- Transaktionen mit automatischer Festschreibung werden bei CORBA-Ausnahmen des Typs "SystemException" und
eXtreme-Scale-Ausnahmen bezüglich der Verfügbarkeit wiederholt.
Zu diesen Ausnahmen gehören die Ausnahmen "ReplicationVotedToRollbackTransactionException",
"TargetNotAvailable" und "AvailabilityException".
Anwendungs- oder andere permanente Fehler
werden sofort zurückgegeben, und die Transaktion wird vom Client nicht wiederholt.
Zu diesen permanenten Fehlern gehören Ausnahmen des Typs "DuplicateKeyException"
und "KeyNotFoundException". Verwenden Sie die Einstellung "fail-fast", damit alle
Ausnahmen ohne Wiederholung der Transaktion zurückgegeben werden.
Ausnahmen mit Wiederholung auf Clientseite- ReplicationVotedToRollbackTransactionException (nur bei automatischer Festschreibung)
- TargetNotAvailable
- org.omg.CORBA.SystemException
- AvailabilityException (nur bei automatischer Festschreibung)
- LockTimeoutException (nur bei automatischer Festschreibung)
- UnavailableServiceException (nur bei automatischer Festschreibung)
Permanente
Ausnahmen ohne Transaktionswiederholung:- DuplicateKeyException
- KeyNotFoundException
- LoaderException
- TransactionAffinityException
- LockDeadlockException
- OptimisticCollisionException
- Zeitlimit in einer Clienteigenschaftendatei definieren.
Zum Festlegen des requestRetryTimeout-Werts in einem Client
müssen Sie in der Clienteigenschaftendatei
die Eigenschaft "requestRetryTimeout" hinzufügen oder ändern. Die Clienteigenschaftendatei ist standardmäßig die Datei objectGridClient.properties.
Die Eigenschaft "requestRetryTimeout" wird in Millisekunden festgelegt.
Setzen Sie die Eigenschaft auf einen Wert größer als null, damit eine Anforderung bei Ausnahmen, für die eine Wiederholung verfügbar ist, wiederholt wird.
Setzen Sie die Eigenschaft auf 0, damit Anforderungen bei Ausnahmen ohne Wiederholung fehlschlagen.
Zur Verwendung des Standardverhaltens entfernen Sie die Eigenschaft, oder setzen Sie sie auf den Wert -1. Im Folgenden sehen Sie ein
Beispiel für den Wert in der Datei objectGridClient.properties:
requestRetryTimeout = 30000
Der requestRetryTimeout-Wert wird in Millisekunden angegeben.
Wenn der Wert aus dem vorherigen Beispiel in einer ObjectGrid-Instanz verwendet wird, ist der requestRetryTimeout-Wert 30 Sekunden.
- Zeitlimit über das Programm definieren.
Wenn Sie die
Clienteigenschaften über das Programm festlegen möchten, müssen Sie zuerst eine Clienteigenschaftendatei an einer für Ihre Anwendung angemessenen
Position erstellen.
Im folgenden Beispiel verweist die Clienteigenschaftendatei auf das Snippet
objectGridClient.properties im vorherigen Abschnitt.
Nach der Herstellung der Verbindung zur ObjectGridManager-Instanz
definieren Sie die Clienteigenschaften wie beschrieben. Die ObjectGrid-Instanz, die Sie erhalten, hat
dann die Clienteigenschaften, die Sie in der Datei definiert haben.
Wenn Sie die Clienteigenschaftendatei ändern, müssen Sie jedes Mal explizit eine neue
ObjectGrid-Instanz anfordern.
ObjectGridManager manager = ObjectGridManagerFactory.getObjectGridManager();
String objectGridName = “testObjectGrid”;
URL clientXML = null;
ClientClusterContext ccc = manager.connect("localhost:2809", null, clientXML);
File file = new File("<location>/objectGridClient.properties");
URL url = file.toURI().toURL();
ccc.setClientProperties(objectGridName, url);
ObjectGrid objectGrid = ogManager.getObjectGrid(ccc, objectGridName);
- Überschreibungsdatei bei einer Sitzungsfestschreibung definieren.
Wenn Sie das Zeitlimit für Anforderungswiederholung in einer Sitzung festlegen
oder die Clienteigenschaft "requestRetryTimeout" überschreiben möchten, rufen Sie die Methode
"setRequestRetryTimeout(long)" in der Schnittstelle "Session" auf.
Session sessionA = objectGrid.getSession();
sessionA.setRequestRetryTimeout(30000);
ObjectMap mapA = sessionA.getMap("payroll");
String key = "key:" + j;
mapA.insert(key, "valueA");
Diese Sitzung verwendet jetzt einen
requestRetryTimeout-Wert von 30000 ms bzw. 30 Sekunden, unabhängig von dem in der Clienteigenschaftendatei festgelegten Wert.
Weitere Informationen zur Schnittstelle "Session" finden Sie unter Session-Objekte für den Zugriff auf Daten im Grid verwenden.