Beispiel #1
0
        public void Register()
        {
            //Setup the connection with the message broker

            //////////////////
            TextWriter oldOut = Console.Out;
            /////////////////

            ConnectionFactory factory  = new ConnectionFactory();
            IProtocol         protocol = Protocols.AMQP_0_9_1;

            factory.VirtualHost = virtualHost;
            factory.UserName    = userName;
            factory.Password    = password;
            factory.HostName    = hostName;
            factory.Port        = port;
            factory.Protocol    = protocol;
            IConnection conn    = factory.CreateConnection();
            IModel      channel = conn.CreateModel();

            uint messageCount = GetMessageCount(factory, queueName);

            EntryService.CreateGeneralAuditoria(Environment.MachineName, Environment.UserName, messageCount);

            if (messageCount == 0)
            {
                EntryService.CreateEntryAuditoria(Environment.MachineName, Environment.UserName, new Entries());
                Environment.Exit(0);
            }
            else
            {
                int messageCountIndex = 0;
                var consumer          = new EventingBasicConsumer(channel);

                consumer.Received += (ch, ea) =>
                {
                    var      body    = ea.Body;
                    string   message = Encoding.UTF8.GetString(body);
                    EntryDTO result  = JsonConvert.DeserializeObject <EntryDTO>(message);

                    EntryService.CreateEntryAuditoria(Environment.MachineName, Environment.UserName, result.entries);

                    if (EntryService.CreateNotaEntry(result.entries))
                    {
                        channel.BasicAck(ea.DeliveryTag, false);
                    }
                    messageCountIndex++;
                };

                if (messageCountIndex == messageCount)
                {
                    Environment.Exit(0);
                }
                String consumerTag = channel.BasicConsume(queueName, false, consumer);
            }
        }