void StartSatellite(SatelliteContext ctx) { Logger.DebugFormat("Starting satellite {0} for {1}.", ctx.Instance.GetType().AssemblyQualifiedName, ctx.Instance.InputAddress); try { if (ctx.Transport != null) { ctx.Transport.TransportMessageReceived += (o, e) => HandleMessageReceived(o, e, ctx.Instance); ctx.Transport.Start(ctx.Instance.InputAddress); } else { Logger.DebugFormat("No input queue configured for {0}", ctx.Instance.GetType().AssemblyQualifiedName); } ctx.Instance.Start(); } catch (Exception ex) { Logger.Error( string.Format("Satellite {0} failed to start.", ctx.Instance.GetType().AssemblyQualifiedName), ex); if (ctx.Transport != null) { ctx.Transport.ChangeMaximumConcurrencyLevel(0); } } }
void StartSatellite(SatelliteContext context) { Logger.DebugFormat("Starting satellite {0} for {1}.", context.Instance.GetType().AssemblyQualifiedName, context.Instance.InputAddress); try { if (context.Transport != null) { context.Transport.TransportMessageReceived += (o, e) => HandleMessageReceived(o, e, context.Instance); context.Transport.Start(context.Instance.InputAddress); } else { Logger.DebugFormat("No input queue configured for {0}", context.Instance.GetType().AssemblyQualifiedName); } context.Instance.Start(); } catch (Exception ex) { Logger.Fatal(string.Format("Satellite {0} failed to start.", context.Instance.GetType().AssemblyQualifiedName), ex); throw; } }
protected virtual void StartSatellite(SatelliteContext ctx) { var thread = new Thread(Execute) { IsBackground = true }; thread.Start(ctx); }
public void Start() { var satellitesList = Configure.Instance.Builder .BuildAll<ISatellite>() .ToList() .Where(s => !s.Disabled) .ToList(); var satelliteContexts = new SatelliteContext[satellitesList.Count]; Parallel.For(0, satellitesList.Count, index => { var satellite = satellitesList[index]; Logger.DebugFormat("Starting {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); var ctx = new SatelliteContext { Instance = satellite }; if (satellite.InputAddress != null) { ctx.Transport = Builder.Build<TransportReceiver>(); var advancedSatellite = satellite as IAdvancedSatellite; if (advancedSatellite != null) { var receiverCustomization = advancedSatellite.GetReceiverCustomization(); receiverCustomization(ctx.Transport); } } StartSatellite(ctx); satelliteContexts[index] = ctx; Logger.InfoFormat("Started {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); }); satellites.AddRange(satelliteContexts); }
public void Start() { var satellitesList = Configure.Instance.Builder .BuildAll <ISatellite>() .ToList() .Where(s => !s.Disabled) .ToList(); var satelliteContexts = new SatelliteContext[satellitesList.Count]; Parallel.For(0, satellitesList.Count, index => { var satellite = satellitesList[index]; Logger.DebugFormat("Starting {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); var ctx = new SatelliteContext { Instance = satellite }; if (satellite.InputAddress != null) { ctx.Transport = Builder.Build <TransportReceiver>(); var advancedSatellite = satellite as IAdvancedSatellite; if (advancedSatellite != null) { var receiverCustomization = advancedSatellite.GetReceiverCustomization(); receiverCustomization(ctx.Transport); } } StartSatellite(ctx); satelliteContexts[index] = ctx; Logger.InfoFormat("Started {1}/{2} '{0}' satellite", satellite.GetType().AssemblyQualifiedName, index + 1, satellitesList.Count); }); satellites.AddRange(satelliteContexts); }
protected void Execute(object data) { SatelliteContext ctx = null; try { ctx = (SatelliteContext)data; if (ctx.Transport != null) { ctx.Transport.TransportMessageReceived += (o, e) => HandleMessageReceived(o, e, ctx.Instance); ctx.Transport.Start(ctx.Instance.InputAddress); Logger.DebugFormat("Starting transport {0} for satellite {1} using {2} thread(s)", ctx.Instance.InputAddress, ctx.Instance.GetType().Name, ctx.Transport.NumberOfWorkerThreads); } else { Logger.DebugFormat("No input queue configured for {0}", ctx.Instance.GetType().Name); } ctx.Instance.Start(); } catch (Exception ex) { if (ctx != null) { Logger.WarnFormat("Satellite {0} failed because of {1}", ctx.Instance.GetType().Name, ex.Message); ctx.Started = false; if (ctx.Transport != null) { ctx.Transport.ChangeNumberOfWorkerThreads(0); } ctx.FailedAttempts++; } } }
protected override void StartSatellite(SatelliteContext ctx) { Execute(ctx); }
public JobRequestsController(SatelliteContext context) => _context = context;
public JobResponsesController(SatelliteContext context) => _context = context;
public SatellitesController(SatelliteContext context) => _context = context;