TimerConsegnaContenutiApplicativiThread.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.pdd.timers;
- import org.slf4j.Logger;
- import java.sql.Timestamp;
- import org.openspcoop2.pdd.config.ConfigurazioneCoda;
- import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
- import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
- import org.openspcoop2.pdd.core.CostantiPdD;
- import org.openspcoop2.pdd.logger.MsgDiagnosticiProperties;
- import org.openspcoop2.pdd.logger.MsgDiagnostico;
- import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
- import org.openspcoop2.pdd.services.OpenSPCoop2Startup;
- import org.openspcoop2.protocol.registry.RegistroServiziManager;
- import org.openspcoop2.utils.Utilities;
- import org.openspcoop2.utils.UtilsException;
- import org.openspcoop2.utils.date.DateUtils;
- import org.openspcoop2.utils.threads.GestoreCodaRunnable;
- import org.openspcoop2.utils.threads.RunnableLogger;
- /**
- * Thread per la gestione del Threshold
- *
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class TimerConsegnaContenutiApplicativiThread extends GestoreCodaRunnable{
- /** Variabile che indica il Nome del modulo dell'architettura di OpenSPCoop rappresentato da questa classe */
- public static final String ID_MODULO = "TimerConsegnaContenutiApplicativi";
- public static Timestamp LOCK_CONSEGNA_FUTURA = null;
- static {
- try {
- LOCK_CONSEGNA_FUTURA = new Timestamp(DateUtils.getSimpleDateFormatDay().parse("2200-12-31").getTime());
- }catch(Throwable t) {
- throw new RuntimeException(t.getMessage(),t);
- }
- }
-
- /** Properties Reader */
- @SuppressWarnings("unused")
- private OpenSPCoop2Properties propertiesReader;
- /** MsgDiagnostico */
- private MsgDiagnostico msgDiag;
-
- /** Logger utilizzato per debug. */
- private Logger log = null;
- /** Indicazione se deve essere effettuato il debug */
- private boolean debug = false;
- /** Numero di messaggi prelevati sulla singola query */
- private int limit = CostantiPdD.LIMIT_MESSAGGI_GESTORI;
- private ConfigurazioneCoda configurazioneCoda;
- public String getQueueConfig() {
- return this.configurazioneCoda.toString(false, ", ");
- }
- private static String getModuleId() throws TimerException {
-
- // Aspetto inizializzazione di OpenSPCoop (aspetto mezzo minuto e poi segnalo errore)
- int attesa = 90;
- int secondi = 0;
- while( (OpenSPCoop2Startup.initialize==false) && (secondi<attesa) ){
- Utilities.sleep(1000);
- secondi++;
- }
- if(secondi>= 90){
- throw new TimerException("Riscontrata inizializzazione OpenSPCoop non effettuata");
- }
-
- return ID_MODULO;
- }
-
- private static MsgDiagnostico msgDiag_staticInstance = null;
- private static synchronized MsgDiagnostico getMsgDiagnostico() throws TimerException {
- if(msgDiag_staticInstance==null) {
- try {
- msgDiag_staticInstance = MsgDiagnostico.newInstance(TimerConsegnaContenutiApplicativiThread.ID_MODULO);
- msgDiag_staticInstance.setPrefixMsgPersonalizzati(MsgDiagnosticiProperties.MSG_DIAG_TIMER_CONSEGNA_CONTENUTI_APPLICATIVI);
- msgDiag_staticInstance.addKeyword(CostantiPdD.KEY_TIMER, ID_MODULO);
- } catch (Exception e) {
- String msgErrore = "Riscontrato Errore durante l'inizializzazione del MsgDiagnostico";
- throw new TimerException(msgErrore,e);
- }
- }
- return msgDiag_staticInstance;
- }
-
- private static TimerConsegnaContenutiApplicativi newTimerConsegnaContenutiApplicativi(ConfigurazioneCoda configurazioneCoda) throws TimerException {
- return new TimerConsegnaContenutiApplicativi(configurazioneCoda, getMsgDiagnostico(),
- new RunnableLogger(ID_MODULO, OpenSPCoop2Logger.getLoggerOpenSPCoopConsegnaContenuti(configurazioneCoda.isDebug())),
- new RunnableLogger(ID_MODULO, OpenSPCoop2Logger.getLoggerOpenSPCoopConsegnaContenutiSql(configurazioneCoda.isDebug())),
- OpenSPCoop2Properties.getInstance(),
- ConfigurazionePdDManager.getInstance(),
- RegistroServiziManager.getInstance());
- }
-
-
- /** Costruttore */
- public TimerConsegnaContenutiApplicativiThread(ConfigurazioneCoda configurazioneCoda) throws TimerException, UtilsException{
-
- super(getModuleId(),
- configurazioneCoda.getPoolSize(),
- configurazioneCoda.getQueueSize(),
- configurazioneCoda.getNextMessages_limit(),
- configurazioneCoda.getNextMessages_intervalloControllo(),
- newTimerConsegnaContenutiApplicativi(configurazioneCoda),
- OpenSPCoop2Logger.getLoggerOpenSPCoopConsegnaContenuti(configurazioneCoda.isDebug()));
-
- this.propertiesReader = OpenSPCoop2Properties.getInstance();
-
- this.configurazioneCoda = configurazioneCoda;
-
- this.debug = configurazioneCoda.isDebug();
-
- this.log = OpenSPCoop2Logger.getLoggerOpenSPCoopConsegnaContenuti(this.debug);
-
- try {
- this.msgDiag = getMsgDiagnostico();
- } catch (Exception e) {
- String msgErrore = "Riscontrato Errore durante l'inizializzazione del MsgDiagnostico";
- this.log.error(msgErrore,e);
- throw new TimerException(msgErrore,e);
- }
- this.msgDiag.logPersonalizzato("avvioInCorso");
- this.log.info(this.msgDiag.getMessaggio_replaceKeywords("avvioInCorso"));
-
- this.setTimeout(configurazioneCoda.getNextMessages_intervalloControllo());
- String s = "secondi";
- if(this.getTimeout() == 1)
- s = "secondo";
- this.msgDiag.addKeyword(CostantiPdD.KEY_TIMEOUT, this.getTimeout()+" "+s);
-
- this.limit = configurazioneCoda.getNextMessages_limit();
- if(this.limit<=0){
- this.limit = CostantiPdD.LIMIT_MESSAGGI_GESTORI;
- }
- this.msgDiag.addKeyword(CostantiPdD.KEY_LIMIT, this.limit+"");
-
- this.msgDiag.logPersonalizzato("avvioEffettuato");
- this.log.info(this.msgDiag.getMessaggio_replaceKeywords("avvioEffettuato"));
- }
-
- }