Exemple #1
0
        public void MessageHandler(IModel channel, DefaultBasicConsumer consumer, BasicDeliverEventArgs eventArgs)
        {
            string message = Encoding.UTF8.GetString(eventArgs.Body) + "\r\n";

            txtConversation.InvokeIfRequired(() =>
            {
                txtConversation.Text += message;
                txtConversation.ScrollToEnd();
            });
        }
Exemple #2
0
        public async Task TestGetQueueProperties()
        {
            var serviceCollection = CreateContainer();

            serviceCollection.AddRabbitConnectionFactory <SingleConnectionFactory>((p, f) =>
            {
                f.Host = "localhost";
            });
            var provider           = serviceCollection.BuildServiceProvider();
            var applicationContext = provider.GetService <IApplicationContext>();
            var connectionFactory  = applicationContext.GetService <IConnectionFactory>();
            var rabbitAdmin        = new RabbitAdmin(applicationContext, connectionFactory);
            var queueName          = "test.properties." + DateTimeOffset.Now.ToUnixTimeMilliseconds();

            try
            {
                rabbitAdmin.DeclareQueue(new Config.Queue(queueName));
                var template = new RabbitTemplate(connectionFactory);
                template.ConvertAndSend(queueName, "foo");
                var n = 0;
                while (n++ < 100 && MessageCount(rabbitAdmin, queueName) == 0)
                {
                    await Task.Delay(100);
                }

                Assert.True(n < 100);
                var channel  = connectionFactory.CreateConnection().CreateChannel(false);
                var consumer = new DefaultBasicConsumer(channel);
                channel.BasicConsume(queueName, true, consumer);
                n = 0;
                while (n++ < 100 && MessageCount(rabbitAdmin, queueName) > 0)
                {
                    await Task.Delay(100);
                }

                Assert.True(n < 100);

                var props = rabbitAdmin.GetQueueProperties(queueName);
                Assert.True(props.TryGetValue(RabbitAdmin.QUEUE_CONSUMER_COUNT, out var consumerCount));
                Assert.Equal(1U, consumerCount);
                channel.Close();
            }
            finally
            {
                rabbitAdmin.DeleteQueue(queueName);
                connectionFactory.Destroy();
            }
        }
        public static void MessageHandler(IModel channel, DefaultBasicConsumer consumer, BasicDeliverEventArgs eventArgs)
        {
            string message = Encoding.UTF8.GetString(eventArgs.Body);

            Console.WriteLine("Message received: " + message);

            foreach (object headerKey in eventArgs.BasicProperties.Headers.Keys)
            {
                Console.WriteLine(headerKey + ": " + eventArgs.BasicProperties.Headers[headerKey]);
            }

            if (message == "quit")
            {
                channel.BasicCancel(consumer.ConsumerTag);
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db");

            foreach (var file in Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db"))
            {
                File.Delete(file);
            }

            var ip               = "127.0.0.1";
            var brokerPort       = 11100;
            var expectedMessages = 10000;

            if (args.Length >= 2)
            {
                ip               = args.First();
                brokerPort       = int.Parse(args[1]);
                expectedMessages = int.Parse(args.Last());
                Console.WriteLine("Running with IP: " + ip + " Broker Port: " + brokerPort);
            }

            var factory = new ConnectionFactory {
                HostName = ip, ListenPort = 12000, Port = brokerPort
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare("hello");

                    var consumer  = new DefaultBasicConsumer(channel);
                    var stopWatch = new Stopwatch();
                    ;
                    var msgNumb = 0;
                    var data    = new List <string>();
                    consumer.Received += (model, ea) =>
                    {
                        if (msgNumb == 0)
                        {
                            stopWatch.Start();
                        }
                        msgNumb++;
                        var body    = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        if (msgNumb == expectedMessages)
                        {
                            Console.WriteLine(msgNumb + " Received {0}", message);
                            stopWatch.Stop();
                            // Get the elapsed time as a TimeSpan value.
                            var ts = stopWatch.Elapsed;

                            // Format and display the TimeSpan value.
                            var elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:00}";
                            Console.WriteLine("RunTime " + elapsedTime);
                            msgNumb   = 0;
                            stopWatch = new Stopwatch();
                            data.Add(elapsedTime);
                            Task.Factory.StartNew(() => File.WriteAllText("./results.txt", JsonConvert.SerializeObject(data)));
                        }
                        else
                        {
                            Console.WriteLine(msgNumb + " Received {0}", message);
                        }
                    };
                    channel.BasicConsume("hello", consumer);


                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
        }