Ejemplo n.º 1
0
        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");
            }
        }
Ejemplo n.º 2
0
        /**
         * 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);
            }
        }