/// <summary> /// Thread de despacho final das mensagems /// </summary> private void mainOutboundProc() { logger.Info("Iniciando thread de despacho final"); long lastLog = 0; while (_bKeepRunning) { try { if (currentFeed < 0) { Thread.Sleep(250); continue; } QuickFix.FIX44.Message message = null; if (mainOutboundQ.TryDequeue(out message)) { int msgSeqNum = message.Header.GetInt(QuickFix.Fields.Tags.MsgSeqNum); string msgType = message.Header.GetString(QuickFix.Fields.Tags.MsgType); logger.Debug("Dispatching Message [" + message.Header.GetInt(QuickFix.Fields.Tags.MsgSeqNum) + "] type [" + message.Header.GetString(QuickFix.Fields.Tags.MsgType) + "]"); if (UnderFIXMessageFire != null) { FIXMachineGunEventEventArgs args = new FIXMachineGunEventEventArgs(); args.Message = message; UnderFIXMessageFire(this, args); } if (MDSUtils.shouldLog(lastLog)) { logger.InfoFormat("Mensagens FIX na fila mainOutboundQ: {0}", mainOutboundQ.Count); lastLog = DateTime.UtcNow.Ticks; } continue; } Thread.Sleep(25); } catch (Exception ex) { logger.Error("mainOutboundProc: " + ex.Message, ex); } } logger.Info("Fim da thread mainOutboundProc"); }
void machineGun_UnderFIXMessageFire(object sender, FIXMachineGunEventEventArgs args) { enqueueToProcess(args.Message); }