private void Run() { string linha; EventoBMF evento; long antes; long depois; while (_bKeepRunning) { linha = null; try { linha = filaMensagensRetransmissorBMF.Pop(); } catch (Exception intExcept) { logger.Error("InterruptedException na leitura da fila de mensagens:"); logger.Debug(intExcept.Message); return; } antes = DateTime.Now.Ticks; string sequencia = linha.Substring( EventoBMF.SEQNUM_INI, EventoBMF.SEQNUM_FIM - EventoBMF.SEQNUM_INI).Trim(); string tipo = linha.Substring( EventoBMF.TYPE_INI, EventoBMF.TYPE_FIM - EventoBMF.TYPE_INI).Trim(); string instrumento = linha.Substring( EventoBMF.SYMBOL_INI, EventoBMF.SYMBOL_FIM - EventoBMF.SYMBOL_INI).Trim(); string codigoInstrumento = linha.Substring( EventoBMF.SECURITYID_INI, EventoBMF.SECURITYID_FIM - EventoBMF.SECURITYID_INI).Trim(); string mensagem = linha.Substring( EventoBMF.BODY_INI); if (tipo.Equals(ConstantesMDS.TIPO_REQUISICAO_BMF_HEARTBEAT)) { continue; } evento = new EventoBMF(sequencia, tipo, instrumento, codigoInstrumento, mensagem); epService.EPRuntime.SendEvent(evento); depois = DateTime.Now.Ticks; TimeSpan elapsed = new TimeSpan(depois - antes); logger.Debug("Mensagem[" + linha + "] Duracao: " + elapsed.TotalMilliseconds + "ms"); } }
/** * Método chamado quando recebe os eventos BMF. * Os eventos são tratados e inseridos na fila da camada consumer. */ public void Update(EventBean[] newEvents, EventBean[] oldEvents) { EventoBMF bmEvent = (EventoBMF)newEvents[0].Underlying; try { filaMensagensLivroOfertas.Push(bmEvent); logger.Debug("Mensagens na fila: " + filaMensagensLivroOfertas.Count); } catch (Exception e) { logger.Error(e.Message); } }