TimerGestoreMessaggiThread.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */



  20. package org.openspcoop2.pdd.timers;

  21. import org.slf4j.Logger;
  22. import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
  23. import org.openspcoop2.pdd.core.CostantiPdD;
  24. import org.openspcoop2.pdd.logger.MsgDiagnosticiProperties;
  25. import org.openspcoop2.pdd.logger.MsgDiagnostico;
  26. import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
  27. import org.openspcoop2.pdd.services.OpenSPCoop2Startup;
  28. import org.openspcoop2.utils.Utilities;
  29. import org.openspcoop2.utils.threads.BaseThread;

  30. /**
  31.  * Thread per la gestione del Threshold
  32.  *
  33.  *  
  34.  * @author Poli Andrea (apoli@link.it)
  35.  * @author $Author$
  36.  * @version $Rev$, $Date$
  37.  */
  38. public class TimerGestoreMessaggiThread extends BaseThread{

  39.     /**
  40.      * Timeout che definisce la scadenza di un messaggio
  41.      */
  42.     private long scadenzaMessaggio = 60l * 24l * 5l; // cablato a 5 giorni (60m * 24h * 5giorni).
  43.     /**
  44.      * Timeout che definisce la scadenza di una correlazione applicativa
  45.      */
  46.     private long scadenzaCorrelazioneApplicativa = 60l * 24l * 5l; // cablato a 5 giorni (60m * 24h * 5giorni).
  47.    
  48.     /** Properties Reader */
  49.     private OpenSPCoop2Properties propertiesReader;
  50.     /** MsgDiagnostico */
  51.     private MsgDiagnostico msgDiag;
  52.    
  53.     /** Logger utilizzato per debug. */
  54.     private Logger logTimer = null;

  55.     /** Indicazione se deve essere effettuato il log delle query */
  56.     private boolean logQuery = false;
  57.     /** Numero di messaggi prelevati sulla singola query */
  58.     private int limit = CostantiPdD.LIMIT_MESSAGGI_GESTORI;
  59.     /** Indicazione se deve essere effettuato l'order by nelle query */
  60.     private boolean orderByQuery = false;
  61.     /** Indicazione se devono essere filtrate le correlazioni applicative scadute rispetto all'ora registrazione */
  62.     private boolean filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione = true;
  63.     /** Indicazione se devono essere filtrate le correlazioni applicative scadute rispetto all'ora registrazione, escludendo pero' quelle che hanno una scadenza impostata */
  64.     private boolean filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione_escludiCorrelazioniConScadenzaImpostata = false;
  65.    
  66.        
  67.     /** Costruttore */
  68.     public TimerGestoreMessaggiThread() throws TimerException{
  69.        
  70.         // Aspetto inizializzazione di OpenSPCoop (aspetto mezzo minuto e poi segnalo errore)
  71.         int attesa = 90;
  72.         int secondi = 0;
  73.         while( (OpenSPCoop2Startup.initialize==false) && (secondi<attesa) ){
  74.             Utilities.sleep(1000);
  75.             secondi++;
  76.         }
  77.         if(secondi>= 90){
  78.             throw new TimerException("Riscontrata inizializzazione OpenSPCoop non effettuata");
  79.         }  

  80.         this.logTimer = OpenSPCoop2Logger.getLoggerOpenSPCoopTimers();
  81.        
  82.         try {
  83.             this.msgDiag = MsgDiagnostico.newInstance(TimerGestoreMessaggi.ID_MODULO);
  84.             this.msgDiag.setPrefixMsgPersonalizzati(MsgDiagnosticiProperties.MSG_DIAG_TIMER_GESTORE_MESSAGGI);
  85.             this.msgDiag.addKeyword(CostantiPdD.KEY_TIMER_GESTORE_MESSAGGI, TimerGestoreMessaggi.ID_MODULO);
  86.         } catch (Exception e) {
  87.             String msgErrore = "Riscontrato Errore durante l'inizializzazione del MsgDiagnostico";
  88.             this.logTimer.error(msgErrore,e);
  89.             throw new TimerException(msgErrore,e);
  90.         }

  91.         this.msgDiag.logPersonalizzato("avvioInCorso");
  92.         this.logTimer.info(this.msgDiag.getMessaggio_replaceKeywords("avvioInCorso"));
  93.        
  94.         try {
  95.             this.propertiesReader = OpenSPCoop2Properties.getInstance();
  96.         } catch (Exception e) {
  97.             this.msgDiag.logErroreGenerico(e,"InizializzazioneTimer");
  98.             String msgErrore = "Riscontrato errore durante l'inizializzazione del Reader delle Properties di OpenSPCoop: "+e.getMessage();
  99.             this.logTimer.error(msgErrore,e);
  100.             throw new TimerException(msgErrore,e);
  101.         }

  102.         this.setTimeout((int)this.propertiesReader.getRepositoryIntervalloEliminazioneMessaggi());
  103.         String s = "secondi";
  104.         if(this.getTimeout() == 1)
  105.             s = "secondo";
  106.         this.msgDiag.addKeyword(CostantiPdD.KEY_TIMEOUT, this.getTimeout()+" "+s);
  107.        
  108.         this.scadenzaMessaggio = this.propertiesReader.getRepositoryIntervalloScadenzaMessaggi();
  109.         s = "minuti";
  110.         if(this.scadenzaMessaggio == 1)
  111.             s = "minuto";
  112.         this.msgDiag.addKeyword(CostantiPdD.KEY_SCADENZA_MESSAGGIO, this.scadenzaMessaggio+" "+s);
  113.        
  114.         this.logQuery = this.propertiesReader.isTimerGestoreMessaggiAbilitatoLog();
  115.         this.orderByQuery = this.propertiesReader.isTimerGestoreMessaggiAbilitatoOrderBy();
  116.        
  117.         this.limit = this.propertiesReader.getTimerGestoreMessaggiLimit();
  118.         if(this.limit<=0){
  119.             this.limit = CostantiPdD.LIMIT_MESSAGGI_GESTORI;
  120.         }
  121.         this.msgDiag.addKeyword(CostantiPdD.KEY_LIMIT, this.limit+"");
  122.        
  123.         this.scadenzaCorrelazioneApplicativa = this.propertiesReader.getRepositoryIntervalloScadenzaCorrelazioneApplicativa();
  124.         this.filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione = this.propertiesReader.isRepositoryScadenzaCorrelazioneApplicativaFiltraRispettoOraRegistrazione();
  125.         this.filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione_escludiCorrelazioniConScadenzaImpostata =
  126.                 this.propertiesReader.isRepositoryScadenzaCorrelazioneApplicativaFiltraRispettoOraRegistrazioneEscludiConScadenzaImpostata();
  127.        
  128.         this.msgDiag.logPersonalizzato("avvioEffettuato");
  129.         this.logTimer.info(this.msgDiag.getMessaggio_replaceKeywords("avvioEffettuato"));
  130.     }
  131.    


  132.     @Override
  133.     public void process(){
  134.         try{
  135.             // Prendo la gestione
  136.             TimerGestoreMessaggiLib gestoreMessaggiLib =
  137.                 new TimerGestoreMessaggiLib(this.msgDiag,this.logTimer,this.propertiesReader,
  138.                     this.scadenzaMessaggio,this.logQuery,
  139.                     this.limit,this.orderByQuery,this.scadenzaCorrelazioneApplicativa,
  140.                     this.filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione,
  141.                     this.filtraCorrelazioniApplicativeScaduteRispettoOraRegistrazione_escludiCorrelazioniConScadenzaImpostata);
  142.            
  143.             gestoreMessaggiLib.check();
  144.            
  145.         }catch(Exception e){
  146.             this.msgDiag.logErroreGenerico(e,"TimerGestoreMessaggiLib.check()");
  147.             this.logTimer.error("Errore generale: "+e.getMessage(),e);
  148.         }finally{
  149.         }
  150.     }
  151. }