mvn clean install tomee:runTolerância a falhas (Fault Tolerance) no MicroProfile - Timeout (Tempo de espera)
Este é um exemplo de como usar o Microprofile @Timeout no TomEE.
Funcionalidade de tiempo de espera (Timeout)
Fault Tolerance Timeout permite especificar quanto tempo pode tomar uma tarefa em completar sua execução e abortá-lo caso demore mais que o tempo especificado. A funcionalidade de Timeout pode ser usada em conjunto com outras anotações para guiar a execução e resultado de uma tarefa. Olhe para o
especificación
para mais detalles.
A anotação @Timeout permite configurar:
- 
value: o valor do tempo de espera 
- 
unit: a unidade do tempo de espera 
Exemplo
Execute o aplicativo
Como funciona isto?
O método statusOfDayByAccuWeather falha quando se atinge o limiar da
anotação @Timeout devido a uma larga execução do método
longProcessingTask. Para responder bem a solicitação, se executará um
método alternativo para completar a solicitação exitosamente. O método
alternativo está determinado pela anotação @Fallback.
@RequestScoped
public class WeatherGateway {
    private static final Logger LOGGER = Logger.getLogger(WeatherGateway.class.getName());
    @Timeout(50)
    @Fallback(fallbackMethod = "statusOfWeekByMetEireann")
    public String statusOfDayByAccuWeather(){
        return longProcessingTask();
    }
    public String statusOfWeekByMetEireann(){
        LOGGER.log(Level.WARNING, "MetEireann backup service has been requested due to AccuWeather timeout");
        return "Beautiful day";
    }
    private String longProcessingTask(){
        try {
            Thread.sleep(80);
        } catch (InterruptedException e) {
            LOGGER.log(Level.WARNING,"AccuWeather task has been interrupted.");
        }
        return null;
    }
    ...
}Chamada para o estado do dia
GET http://localhost:8080/mp-faulttolerance-timeout/weather/day/statusLogs do Servidor
WARNING AccuWeather task has been interrupted.
WARNING MetEireann fallback service has been requested due to AccuWeather timeout.Resposta HTTP
Beautiful day!Executando os testes
Você também pode experimentá-lo usando o WeatherServiceTest.java disponível no projeto.
mvn clean test[INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
