Exemple #1
0
        static void UdpateDynamicRule(DynamicRule myDynamicRule, IModel channel)
        {
            var updateControl     = JsonConvert.SerializeObject(myDynamicRule);
            var updateControlBody = Encoding.UTF8.GetBytes(updateControl);

            channel.BasicPublish("", "dynamic_control_router", null, updateControlBody);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var myDynamicRule = new DynamicRule
            {
                Name           = "c_queue",
                CurrentElapsed = TimeSpan.Zero,
                TotalService   = 0
            };

            var randomElapsedProcess = new Random(DateTime.Now.Second);

            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(myDynamicRule.Name, true, false, false, null);
                    channel.BasicQos(0, 1, false);

                    UdpateDynamicRule(myDynamicRule, channel);

                    var consumer = new QueueingBasicConsumer(channel);
                    channel.BasicConsume(myDynamicRule.Name, false, consumer);

                    Console.WriteLine(" [*] Waiting for Number for A-Math Provider. " +
                                      "To exit press CTRL+C");
                    while (true)
                    {
                        var ea =
                            (BasicDeliverEventArgs)consumer.Queue.Dequeue();

                        var body    = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine(" [x] A-Math Process {0}", message);

                        Stopwatch stopwatch = Stopwatch.StartNew();
                        Thread.Sleep(randomElapsedProcess.Next(1000));

                        myDynamicRule.CurrentElapsed = stopwatch.Elapsed;
                        ++myDynamicRule.TotalService;

                        UdpateDynamicRule(myDynamicRule, channel);

                        Console.WriteLine(" [x] Process Done " + ea.DeliveryTag);
                        channel.BasicAck(ea.DeliveryTag, false);
                    }
                }
        }