protected override void trataAssinatura(string tipo, string instrumento, string sessionID) { string mensagem = ""; bool bsinaliza = false; LivroOfertasConsumerBase lofConsumer = ContainerManager.Instance.LivroOfertasConsumer; logger.DebugFormat("{0} assinatura de {1} de {2}", sessionID, tipo, instrumento); // Aqui tem o pulo do gato // interrompe o processamento dos eventos ate a chegada do snapshot // para nao quebrar a sequencia do sinal do livro lock (objLockSnapshot) { EventoHttpLivroOfertasAgregado httpLOA; httpLOA = lofConsumer.SnapshotStreamerLivroAgregado(instrumento, sessionID); logger.Debug("Snapshot LOA de " + instrumento + ": " + httpLOA.livroCompra.Count + "C/" + httpLOA.livroVenda.Count + "V items"); mensagem = JsonConvert.SerializeObject(httpLOA); mensagem = MDSUtils.montaMensagemHttp(ConstantesMDS.TIPO_REQUISICAO_LIVRO_OFERTAS_AGREGADO, instrumento, null, mensagem); bsinaliza = queueToStreamer.IsEmpty; queueToStreamer.Enqueue(mensagem); } if (bsinaliza) { lock (syncQueueToStreamer) { Monitor.Pulse(syncQueueToStreamer); } } }
public void Start(Dictionary <string, ChannelUDMF> _dctCanais) { LivroOfertasConsumer = new LivroOfertasConsumerBase(_dctCanais); LivroOfertasConsumer.Start(); NegociosConsumer = new NegociosConsumerBase(_dctCanais); NegociosConsumer.Start(); NewsConsumer = new NewsConsumerBase(_dctCanais); NewsConsumer.Start(); }