Пример #1
0
        public static void Main(string[] args)
        {
            using(var factory = new CustomConnectionFactory () {
                HostName = "10.0.0.10",
                UserName = "******",
                Password = "******",
                VirtualHost = "/",
                AutomaticRecoveryEnabled = false,
                UseBackgroundThreadsForIO = false,
                RequestedHeartbeat = 0})
            using(var sender = new RabbitMqNotificationPublisher("customer1", factory, "flights"))
            foreach(var message in StringIterator())
            {
                Console.WriteLine("Sending message {0}", message);
                try
                {
                    sender.SendMessages(message);
                }
                catch(Exception e)
                {
                    Console.WriteLine("Failed to send message {0}\n {1}", message, e.Message);
                }
            }
            /*

            var messageBacklog = new List<string>();
            var backlogLock = new object();
            var messageThread = new Thread(() => {
                foreach (var message in StringIterator())
                {
                    var factory = new ConnectionFactory () {
                        HostName = "10.0.0.10",
                        UserName = "******",
                        Password = "******",
                        VirtualHost = "/",
                        AutomaticRecoveryEnabled = false,
                        UseBackgroundThreadsForIO = false,
                        RequestedHeartbeat = 0};
                    var sender = new RabbitMqNotificationPublisher ("customer1", factory, "flights");
                    try
                    {
                        Console.WriteLine("Sending message {0}", message);
                        sender.SendMessages(message);
                    }
                    catch
                    {
                        lock(backlogLock)
                        {
                            messageBacklog.Add(message);
                        }
                    }
                }
            });
            messageThread.Start();
            while (true)
            {
                lock (backlogLock)
                {
                    if (messageBacklog.Count == 0)
                    {
                        Thread.Sleep(4000);
                    }
                    Console.WriteLine("Sending backlog of {0} messages", messageBacklog.Count);
                }
                IList<string> messages;
                lock(backlogLock)
                {
                    messages = new List<string>(messageBacklog);
                }
                foreach(var backlogMessage in messages)
                {
                    var factory = new ConnectionFactory () {
                        HostName = "10.0.0.10",
                        UserName = "******",
                        Password = "******",
                        VirtualHost = "/",
                        AutomaticRecoveryEnabled = false,
                        UseBackgroundThreadsForIO = false,
                        RequestedHeartbeat = 0};
                    var sender = new RabbitMqNotificationPublisher ("customer1", factory, "flights");
                    var err = false;
                    try
                    {
                        Console.WriteLine("Sending backlogged message {0}", backlogMessage);
                        sender.SendMessages(backlogMessage);
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("Failed to send message", e);
                        err = true;
                    }
                    finally
                    {
                        if (!err)
                        {
                            lock(backlogLock)
                            {
                                messageBacklog.Remove(backlogMessage);
                            }
                        }
                    }
                }
            }*/
        }
Пример #2
0
        public static void Main(string[] args)
        {
            using (var factory = new CustomConnectionFactory()
            {
                HostName = "10.0.0.10",
                UserName = "******",
                Password = "******",
                VirtualHost = "/",
                AutomaticRecoveryEnabled = false,
                UseBackgroundThreadsForIO = false,
                RequestedHeartbeat = 0
            })
                using (var sender = new RabbitMqNotificationPublisher("customer1", factory, "flights"))
                    foreach (var message in StringIterator())
                    {
                        Console.WriteLine("Sending message {0}", message);
                        try
                        {
                            sender.SendMessages(message);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Failed to send message {0}\n {1}", message, e.Message);
                        }
                    }

            /*
             *
             * var messageBacklog = new List<string>();
             * var backlogLock = new object();
             * var messageThread = new Thread(() => {
             *      foreach (var message in StringIterator())
             *      {
             *              var factory = new ConnectionFactory () {
             *                      HostName = "10.0.0.10",
             *                      UserName = "******",
             *                      Password = "******",
             *                      VirtualHost = "/",
             *                      AutomaticRecoveryEnabled = false,
             *                      UseBackgroundThreadsForIO = false,
             *                      RequestedHeartbeat = 0};
             *              var sender = new RabbitMqNotificationPublisher ("customer1", factory, "flights");
             *              try
             *              {
             *                      Console.WriteLine("Sending message {0}", message);
             *                      sender.SendMessages(message);
             *              }
             *              catch
             *              {
             *                      lock(backlogLock)
             *                      {
             *                              messageBacklog.Add(message);
             *                      }
             *              }
             *      }
             * });
             * messageThread.Start();
             * while (true)
             * {
             *      lock (backlogLock)
             *      {
             *              if (messageBacklog.Count == 0)
             *              {
             *                      Thread.Sleep(4000);
             *              }
             *              Console.WriteLine("Sending backlog of {0} messages", messageBacklog.Count);
             *      }
             *      IList<string> messages;
             *      lock(backlogLock)
             *      {
             *              messages = new List<string>(messageBacklog);
             *      }
             *      foreach(var backlogMessage in messages)
             *      {
             *              var factory = new ConnectionFactory () {
             *                      HostName = "10.0.0.10",
             *                      UserName = "******",
             *                      Password = "******",
             *                      VirtualHost = "/",
             *                      AutomaticRecoveryEnabled = false,
             *                      UseBackgroundThreadsForIO = false,
             *                      RequestedHeartbeat = 0};
             *              var sender = new RabbitMqNotificationPublisher ("customer1", factory, "flights");
             *              var err = false;
             *              try
             *              {
             *                      Console.WriteLine("Sending backlogged message {0}", backlogMessage);
             *                      sender.SendMessages(backlogMessage);
             *              }
             *              catch(Exception e)
             *              {
             *                      Console.WriteLine("Failed to send message", e);
             *                      err = true;
             *              }
             *              finally
             *              {
             *                      if (!err)
             *                      {
             *                              lock(backlogLock)
             *                              {
             *                                      messageBacklog.Remove(backlogMessage);
             *                              }
             *                      }
             *              }
             *      }
             * }*/
        }