Ejemplo n.º 1
0
        public void EnqueueEventoUmdf(EventoUmdf e)
        {
            //logger.DebugFormat("Enfileirando msg [{0}] para LOF e NEG consumer", e.MsgSeqNum);

            if (!e.MsgType.Equals(ConstantesUMDF.FAST_MSGTYPE_MELHOR_OFERTA) &&
                !e.MsgType.Equals(ConstantesUMDF.FAST_MSGTYPE_SECURITYSTATUS))
            {
                LivroOfertasConsumer.EnqueueEventoUmdf(e);
            }

            NegociosConsumer.EnqueueEventoUmdf(e);
        }
Ejemplo n.º 2
0
        void EPRuntime_UnmatchedEvent(object sender, UnmatchedEventArgs e)
        {
            logger.Error("UnmatchedEvent [" + e.Event.EventType.ToString() + "]");

            EventoUmdf evento = e.Event.Underlying as EventoUmdf;

            if (evento != null)
            {
                logger.Debug("UNMATCHED " +
                             "MsgSeqNum=[" + evento.MsgSeqNum +
                             "] MsgType=[" + evento.MsgType +
                             "] TemplateId=[" + evento.TemplateID +
                             "] Segment=[" + evento.UmdfSegment +
                             "] Channel=[" + evento.ChannelID +
                             "] message=[" + evento.MsgBody.ToString() + "]");
            }
        }
Ejemplo n.º 3
0
        protected virtual void processaEventoUmdf(EventoUmdf evento)
        {
            // Se nao existe thread para tratar o evento, cria
            EventoUmdfWorkerState workerState = null;

            if (evento == null)
            {
                logger.Error("EventoUmdf nao pode ser nulo");
                return;
            }

            if (String.IsNullOrEmpty(evento.ChannelID))
            {
                logger.Error("Eita porra....channelID nulo");
                return;
            }

            if (!poolWorkers.TryGetValue(evento.ChannelID, out workerState))
            {
                logger.Info("Criando worker para  channel [" + evento.ChannelID + "]");
                workerState             = new EventoUmdfWorkerState();
                workerState.ChannelID   = evento.ChannelID;
                workerState.Thread      = new Thread(new ParameterizedThreadStart(eventoUmdfThreadWork));
                workerState.Thread.Name = myThreadName + "-Worker-" + workerState.ChannelID;
                workerState.Thread.Start(workerState);

                poolWorkers.Add(evento.ChannelID, workerState);
            }

            //bool sinaliza = workerState.QueueEventos.IsEmpty;
            workerState.QueueEventos.Enqueue(evento);
            if (MDSUtils.shouldLog(workerState.lastEnqueueLog, 30))
            {
                logger.Info("processaEventoUmdf para channelID [" + workerState.ChannelID + "] fila:" + workerState.QueueEventos.Count);
                workerState.lastEnqueueLog = DateTime.UtcNow.Ticks;
            }

            //if (sinaliza)
            //{
            //    lock (workerState.SyncObj)
            //    {
            //        Monitor.Pulse(workerState.SyncObj);
            //    }
            //}
        }
Ejemplo n.º 4
0
        public static void GenerateEsperEvent(Message message,
                                              String templateId,
                                              String channelID,
                                              String segment,
                                              String msgType,
                                              int marketDepth,
                                              StreamTypeEnum streamType)
        {
            try
            {
                EventoUmdf evento = new EventoUmdf();
                evento.MsgSeqNum   = message.GetInt("MsgSeqNum");
                evento.MsgType     = msgType;
                evento.TemplateID  = templateId;
                evento.MsgBody     = message;
                evento.ChannelID   = channelID;
                evento.UmdfSegment = segment;
                evento.MarketDepth = marketDepth;
                evento.StreamType  = streamType;

                if (logger.IsDebugEnabled)
                {
                    logger.Debug("Gerando evento Esper " +
                                 "MsgSeqNum=[" + evento.MsgSeqNum +
                                 "] MsgType=[" + evento.MsgType +
                                 "] TemplateId=[" + evento.TemplateID +
                                 "] Segment=[" + evento.UmdfSegment +
                                 "] Channel=[" + evento.ChannelID +
                                 "] Stream=[" + evento.StreamType.ToString() +
                                 "] MarketDepth=[" + evento.MarketDepth.ToString() +
                                 "] message=[" + evento.MsgBody.ToString() + "]");
                }

                ContainerManager.Instance.EnqueueEventoUmdf(evento);
            }
            catch (Exception ex)
            {
                logger.Error("Exception em generateEsperEvent - MsgSeqNum=[" + message.GetInt("MsgSeqNum") + "]");
                logger.Error(ex.Message, ex);
            }

            return;
        }
Ejemplo n.º 5
0
        protected override void trataEventoUmdf(EventoUmdf evento)
        {
            try
            {
                String           msgType     = evento.MsgType;
                OpenFAST.Message umdfMessage = evento.MsgBody;
                String           instrumento = "";
                String           msgID       = evento.MsgSeqNum.ToString();
                String           channelId   = evento.ChannelID;
                bool             isPuma      = dicCanais[channelId].channelConfig.IsPuma;
                bool             isBMF       = (dicCanais[channelId].channelConfig.Segment.ToUpper().Equals(ConstantesMDS.CHANNEL_UMDF_SEGMENT_BMF) ? true : false);
                //bool isPuma20 = dicCanais[channelId].channelConfig.IsPuma20;
                int  marketDepth    = evento.MarketDepth;
                bool sendToStreamer = true;

                if (logger.IsDebugEnabled)
                {
                    logger.DebugFormat("channelID ....: {0} (isPuma={1})", channelId, isPuma.ToString());
                    logger.DebugFormat("msgID  .......: {0}", msgID);
                    logger.DebugFormat("Message ......: {0}", umdfMessage.ToString());
                }

                if (umdfMessage.IsDefined("Headline"))
                {
                    logger.Info("Head [" + umdfMessage.GetString("Headline") + "]");
                }

                if (umdfMessage.IsDefined("Text"))
                {
                    logger.Info("Text: [" + umdfMessage.GetString("Text") + "]");
                }

                if (umdfMessage.IsDefined("URLLink"))
                {
                    logger.Info("URL: [" + umdfMessage.GetString("URLLink") + "]");
                }
            }
            catch (Exception ex)
            {
                logger.Error("NewsConsumerBase.TrataEventoUmdf(): " + ex.Message, ex);
            }
        }
Ejemplo n.º 6
0
        public virtual void EnqueueEventoUmdf(EventoUmdf e)
        {
            try
            {
                //bool sinaliza = queueEventos.IsEmpty;
                queueEventos.Enqueue(e);

                //if (sinaliza)
                //{
                //    lock (SyncObj)
                //    {
                //        Monitor.Pulse(SyncObj);
                //    }
                //}
            }
            catch (Exception ex)
            {
                logger.Error("EnqueueEventoUmdf(): " + ex.Message, ex);
            }
        }
Ejemplo n.º 7
0
        public static void EnqueueEventoUmdfNews(Message message,
                                                 String templateId,
                                                 String channelID,
                                                 String segment,
                                                 String msgType,
                                                 StreamTypeEnum streamType)
        {
            try
            {
                EventoUmdf evento = new EventoUmdf();
                evento.MsgSeqNum   = message.GetInt("MsgSeqNum");
                evento.MsgType     = msgType;
                evento.TemplateID  = templateId;
                evento.MsgBody     = message;
                evento.ChannelID   = channelID;
                evento.UmdfSegment = segment;
                evento.StreamType  = streamType;

                if (logger.IsDebugEnabled)
                {
                    logger.Debug("Enfileirando evento umdf noticias" +
                                 "MsgSeqNum=[" + evento.MsgSeqNum +
                                 "] MsgType=[" + evento.MsgType +
                                 "] TemplateId=[" + evento.TemplateID +
                                 "] Segment=[" + evento.UmdfSegment +
                                 "] Channel=[" + evento.ChannelID +
                                 "] Stream=[" + evento.StreamType.ToString() +
                                 "] message=[" + evento.MsgBody.ToString() + "]");
                }

                ContainerManager.Instance.EnqueueNews(evento);
            }
            catch (Exception ex)
            {
                logger.Error("EnqueueEventoUmdfNews - MsgSeqNum=[" + message.GetInt("MsgSeqNum") + "]");
                logger.Error(ex.Message, ex);
            }

            return;
        }
Ejemplo n.º 8
0
 public void EnqueueNews(EventoUmdf e)
 {
     NewsConsumer.EnqueueEventoUmdf(e);
 }
Ejemplo n.º 9
0
 protected abstract void trataEventoUmdf(EventoUmdf evento);