Archivos por Etiqueta: batch

Java: Skeleton for Workers / Batch processing

Un pequeño esqueleto que persigue:

  1. Que no se coma la CPU.
  2. Que no se coma el espacio el disco soltando trazas de fallo.
  3. Que ante una excepcion «extraña» no se muera el worker.
@Override
public void run() {
	int c = 0;
	while (!isShutdown()) {
		if ((++c % 10000) == 0) { // Anti cpu eater
			intrSleep(1);
		}
		try {
			// ... do things
		} catch (ControlledException e) {
			// ... do things
			log.error("ControlledException: " + e.toString(), e);
			intrSleep(100); // Anti disk space eater
		} catch (Exception e) {
			// ... last resort
			log.error("Unknown Exception: " + e.toString(), e);
			intrSleep(100); // Anti disk space eater
		}
	}
}
private static void intrSleep(final long millis) {
	try {
		Thread.sleep(millis);
	} catch (InterruptedException e) {
		Thread.currentThread().interrupt();
	}
}