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); } } } } }*/ }
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); * } * } * } * } * }*/ }