public Replicator() { _factory = new ChannelFactory <ISyslog>(new NetTcpBinding(), string.Format("net.tcp://{0}:{1}/SyslogService", AppConfig.BACKUP_ADDRESS, AppConfig.BACKUP_PORT)); _backupProxy = _factory.CreateChannel(); _replicator = new Thread(ReplicatePeriodically); _replicator.Start(); }
/// <summary> /// Trying to replicate logs from Queue. Create new channel, if channel is not created /// </summary> private void Replicate() { try { lock (locker) { _backupProxy.SendAll(_logQueue.ToList()); Console.WriteLine("Replicated {0} logs on backup server.", _logQueue.Count); _logQueue.Clear(); } } catch (Exception e) { Console.WriteLine("Backup server not available : {0}.", e.GetType()); _backupProxy = _factory.CreateChannel(); } }