Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var    connection = ConnectionFactory.CreateConnection();
            IModel channel    = connection.CreateModel();

            ExchangeDeclarer.DeclareExchange(channel);
            QueueDeclarer.DeclareQueue(channel);
            channel.QueueBind(Names.QueueName, Names.ExchangeName, Names.RoutingKey, null);

            var publishMonitor = new PublishMonitor();

            channel.ConfirmSelect();
            channel.BasicAcks  += publishMonitor.OnBasicAck;
            channel.BasicNacks += publishMonitor.OnBasicNack;

            var commandLineArgs = CommandLineArgs.Parse(args);

            var(messageProperties, messageBody) = MessageBuilder.GetMessage(channel, commandLineArgs.Message);
            for (int i = 0; i < commandLineArgs.Count; i++)
            {
                publishMonitor.NewMessagePublished();
                channel.BasicPublish(
                    Names.ExchangeName,
                    Names.RoutingKey,
                    basicProperties: messageProperties,
                    body: messageBody);
            }

            ConsumeMessages(channel);
        }
Exemplo n.º 2
0
        static void Main()
        {
            var connection = RabbitConnectionSingleton.Get();
            var channel    = connection.CreateModel();

            AlertsExchangeFactory.DeclareAlertsExhange(channel);
            var criticalQueueName  = QueueDeclarer.DeclareQueueCritical(channel);
            var rateLimitQueueName = QueueDeclarer.DeclareQueueRateLimit(channel);

            channel.BasicConsume(
                criticalQueueName,
                autoAck: false,
                consumer: new CriticalQueueConsumer(channel),
                consumerTag: "critical"
                );
            channel.BasicConsume(
                rateLimitQueueName,
                autoAck: false,
                consumer: new RateLimitQueueConsumer(channel),
                consumerTag: "rate_limit");

            Console.WriteLine("Ready for alerts!");
        }
Exemplo n.º 3
0
 private static void EnsureExchangeAndQueues(IModel channel)
 {
     AlertsExchangeFactory.DeclareAlertsExhange(channel);
     QueueDeclarer.DeclareQueueRateLimit(channel);
     QueueDeclarer.DeclareQueueCritical(channel);
 }