public override void IniciarServico() { logger.Info("*** Iniciando Processador de Cotacao ***"); _bKeepRunning = true; _config = GerenciadorConfig.ReceberConfig <ProcessadorCotacaoConfig>(); UMDFConfig _umdfconfig = GerenciadorConfig.ReceberConfig <UMDFConfig>(); _umdfSockets = new MDSPackageSocket[_umdfconfig.Portas.Count]; int i = 0; foreach (int porta in _umdfconfig.Portas) { _umdfSockets[i] = new MDSPackageSocket(); _umdfSockets[i].IpAddr = _config.MDSAddress; _umdfSockets[i].Port = porta; _umdfSockets[i].OnFastQuoteReceived += new MDSMessageReceivedHandler(OnCotacao); _umdfSockets[i].OnSerieHistoricaReceived += new MDSMessageReceivedHandler(OnSerieHistorica); i++; } _db = new ANGPersistenciaDB(); _db.ConnectionString = _config.ConnectionString; _db.MDSConnectionString = _config.MDSConnectionString; _threadCotacao = new Thread(new ThreadStart(Run)); _threadCotacao.Start(); _threadSerieHistorica = new Thread(new ThreadStart(SerieHistoricaRun)); _threadSerieHistorica.Start(); _srvstatus = ServicoStatus.EmExecucao; }
public virtual void Run() { long lastlog = 0; while (_bKeepRunning) { if (_mds == null || _mds.IsConectado() == false) { _mds = new MDSPackageSocket(); _mds.IpAddr = ConfigurationManager.AppSettings["MDSAddress"].ToString(); _mds.Port = Convert.ToInt32(ConfigurationManager.AppSettings["MDSPort"].ToString()); _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao); _mds.OpenConnection(); } List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>(); MDSMessageEventArgs mensagem = null; if (queueMensagemMds.TryDequeue(out mensagem)) { switch (mensagem.TipoMsg) { case MDSPackageSocket.TIPOMSG_NEGOCIO: ProcessarMensagemCotacao(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_CADASTROBASICO: ProcessarMensagemCadastroBasico(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_ABERTURA: ProcessarMensagemAbertura(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_FECHAMENTO: ProcessarMensagemFechamento(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_AJUSTE: ProcessarMensagemAjuste(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_UNITARIO: ProcessarMensagemUnitario(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE: ProcessarMensagemComposicaoIndice(mensagem.Message); break; } TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - lastlog); if (ts.TotalMilliseconds > 2000) { logger.Info("Fila de mensagens a processar: " + queueMensagemMds.Count); lastlog = DateTime.Now.Ticks; } continue; } Thread.Sleep(250); } }
public virtual void Run() { bool bWait = false; while (_bKeepRunning) { if (_mds == null || _mds.IsConectado() == false) { _mds = new MDSPackageSocket(); _mds.IpAddr = _config.MDSAddress; _mds.Port = _config.MDSPort; _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao); _mds.OpenConnection(); } List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>(); lock (queueMensagemMds) { tmpQueue = queueMensagemMds.ToList(); queueMensagemMds.Clear(); } foreach (MDSMessageEventArgs mensagem in tmpQueue) { switch (mensagem.TipoMsg) { case MDSPackageSocket.TIPOMSG_NEGOCIO: ProcessarMensagemCotacao(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_CADASTROBASICO: ProcessarMensagemCadastroBasico(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_ABERTURA: ProcessarMensagemAbertura(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_FECHAMENTO: ProcessarMensagemFechamento(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_AJUSTE: ProcessarMensagemAjuste(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_UNITARIO: ProcessarMensagemUnitario(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE: ProcessarMensagemComposicaoIndice(mensagem.Message); break; } } lock (queueMensagemMds) { if (queueMensagemMds.Count == 0) { bWait = true; } else { bWait = false; } } if (bWait) { Thread.Sleep(250); } } }