Con las correlaciones fiables, puede proporcionar un valor de tiempo de espera de reintento en milisegundos a WebSphere eXtreme
Scale para las solicitudes de transacción.
Acerca de esta tarea
Puede configurar el valor de tiempo de espera en el archivo de propiedades de cliente o en una sesión. El valor de sesión sustituye el valor de propiedades de cliente. Si el valor se establece en un valor mayor que cero, la solicitud se intenta hasta que se cumple una condición de tiempo de espera o se produce una anomalía permanente. Una
anomalía permanente puede ser una excepción
DuplicateKeyException.
Un valor de cero indica el valor de modalidad fail-fast y eXtreme Scale no intenta de nuevo la transacción después de cualquier tipo de transacción.
Durante la ejecución, el valor de tiempo de espera de transacción se utiliza con el valor de tiempo de espera de reintento, lo que garantiza que el tiempo de espera de reintento no sobrepase el tiempo de espera de transacción.
Existen dos tipos de transacciones: transacciones de confirmación automática y transacciones que utilizan los métodos
begin y
commit explícitos.
Las excepciones válidas de reintento difieren entre los dos tipos de transacciones:
- Para transacciones a las que se llama en una sesión, se intentan de nuevo las transacciones para las excepciones SystemException de CORBA y TargetNotAvailable de eXtreme Scale.
- Para transacciones de confirmación automática, se intentan de nuevo las transacciones
para las excepciones de disponibilidad de
eXtreme Scale y SystemException de CORBA.
Estas excepciones incluyen las excepciones ReplicationVotedToRollbackTransactionException,
TargetNotAvailable y AvailabilityException.
Las anomalías de la aplicación y otras anomalías permanentes se devuelven inmediatamente y el cliente no intenta de nuevo la transacción. Estas anomalías permanentes incluyen las excepciones DuplicateKeyException y KeyNotFoundException. Utilice el valor fail-fast para que se devuelvan todas las excepciones sin intentar transacciones de nuevo después de cualquier excepción.
Excepciones donde el cliente intenta de nuevo la transacción:- ReplicationVotedToRollbackTransactionException (sólo en compromiso automático)
- TargetNotAvailable
- org.omg.CORBA.SystemException
- AvailabilityException (sólo en compromiso automático)
- LockTimeoutException (sólo en compromiso automático)
- UnavailableServiceException (sólo en compromiso automático)
Excepciones permanentes, donde la transacción no se vuelve a intentar:- DuplicateKeyException
- KeyNotFoundException
- LoaderException
- TransactionAffinityException
- LockDeadlockException
- OptimisticCollisionException
- Establezca el valor de tiempo de espera en un archivo de propiedades de cliente.
Para establecer el valor requestRetryTimeout en un cliente, añadir o modificar la propiedad requestRetryTimeout en Archivo de propiedades de cliente. Las propiedades de cliente están en el archivo objectGridClient.properties de forma predeterminada. La propiedad requestRetryTimeout se establece en milisegundos. Establézcalo en un valor mayor que cero para la solicitud que se debe reintentar en las excepciones para las que está disponible el reintento. Establezca el valor en 0 para fail sin reintentos en las excepciones. Para utilizar el comportamiento predeterminado, elimine la propiedad o establezca el valor en -1. A continuación se muestra un ejemplo del valor del archivo objectGridClient.properties:
requestRetryTimeout = 30000
El valor requestRetryTimeout se especifica en milisegundos. En el ejemplo, si se utiliza el valor en una instancia de ObjectGrid, el valor de requestRetryTimeout es de 30 segundos.
- Establezca el valor de tiempo de espera mediante programación.
Para establecer las propiedades de cliente a través de un programa, en primer lugar, cree un archivo de propiedades en una <ubicación> adecuada para la aplicación. En el siguiente ejemplo, el archivo de propiedades de cliente hace referencia al fragmento de código objectGridClient.properties de la sección anterior. Después de conectar a la instancia de ObjectGridManager,
establezca las propiedades de cliente tal como se describe. A continuación, cuando tenga una instancia de ObjectGrid, la instancia tendrá las propiedades de cliente que ha definido en el archivo. Si cambia el archivo de propiedades del cliente, deberá obtener explícitamente una nueva instancia de ObjectGrid cada vez.
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);
- Establezca el archivo de sustitución durante la confirmación de la sesión.
Para establecer el tiempo de espera de reintento de solicitud en una sesión o para alterar temporalmente la propiedad de cliente requestRetryTimeout, llame al método setRequestRetryTimeout(long) en la interfaz Session.
Session sessionA = objectGrid.getSession();
sessionA.setRequestRetryTimeout(30000);
ObjectMap mapA = sessionA.getMap("payroll");
String key = "key:" + j;
mapA.insert(key, "valueA");
Ahora esta sesión utiliza un valor
requestRetryTimeout de 30000 ms o 30 segundos, independientemente del valor que
esté establecido en el archivo de propiedades de cliente. Para obtener más información
sobre la interfaz de sesión, consulte Utilización de sesiones para acceder a los datos de la cuadrícula.