public static void ConfigureBus(ContainerBuilder builder, MonitoredServices monitoringName = MonitoredServices.NotMonitored, Action <IRabbitMqBusFactoryConfigurator, IComponentContext> registrationAction = null) { Log.Information("Configuring Bus uri={uri} user={user}", Settings.Default.RabbitMqUri, Settings.Default.RabbitMqUserName); // Configure Logging for Masstransit using Serilog MassTransit.Context.LogContext.ConfigureCurrentLogContext(new SerilogLoggerFactory(Log.Logger)); builder.Register(ctx => { return(MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg => { cfg.Host(new Uri(Settings.Default.RabbitMqUri), hst => { hst.Username(Settings.Default.RabbitMqUserName); hst.Password(Settings.Default.RabbitMqPassword); }); if (monitoringName != MonitoredServices.NotMonitored) { cfg.ReceiveEndpoint(string.Format(BusConstants.MonitoringServiceHeartbeatRequestQueue, monitoringName.ToString()), ec => { ec.Consumer(() => new HeartbeatConsumer(monitoringName.ToString())); }); } var context = ctx.Resolve <IComponentContext>(); registrationAction?.Invoke(cfg, context); })); }) .SingleInstance() .As <IBusControl>() .As <IBus>() .ExternallyOwned(); }
public void Start(MonitoredServices serviceCollection) { if (_processingThread != null && _processingThread.ThreadState == ThreadState.Running) { _log.Error("Cannot start, thread still running!"); State = ServiceMonitorState.Doomed; return; } State = ServiceMonitorState.Starting; _services = new List <ServiceInfo>(); foreach (var svc in serviceCollection) { var s = svc as MonitoredService; var installCmd = string.Empty; if (!string.IsNullOrEmpty(s.InstallCommandLine)) { installCmd = s.InstallCommandLine; } else if (!string.IsNullOrEmpty(s.ServiceExecutablePath)) { //topshelf service. install with 'install' param. installCmd = $"{s.ServiceExecutablePath} install -servicename:{s.ServiceName} --autostart"; } _services.Add(new ServiceInfo { ServiceName = s.ServiceName, InstallCommandLine = installCmd, MonitorInterval = s.CheckFrequencyValue, NextCheck = DateTime.Now.AddSeconds(s.CheckFrequencyValue) }); } _processingThread = new Thread(new ThreadStart(MonitorServices)); _processingThread.Start(); }
public static IBusControl ConfigureBus(MonitoredServices monitoringName = MonitoredServices.NotMonitored, Action <IRabbitMqBusFactoryConfigurator, IRabbitMqHost> registrationAction = null) { Log.Information("Configuring Bus uri={uri} user={user}", Settings.Default.RabbitMqUri, Settings.Default.RabbitMqUserName); return(MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg => { var host = cfg.Host(new Uri(Settings.Default.RabbitMqUri), hst => { hst.Username(Settings.Default.RabbitMqUserName); hst.Password(Settings.Default.RabbitMqPassword); }); if (monitoringName != MonitoredServices.NotMonitored) { cfg.ReceiveEndpoint(host, string.Format(BusConstants.MonitoringServiceHeartbeatRequestQueue, monitoringName.ToString()), ec => { ec.Consumer(() => new HeartbeatConsumer(monitoringName.ToString())); }); } registrationAction?.Invoke(cfg, host); })); }
public HeartbeatResponse(MonitoredServices type, HeartbeatStatus status) { Type = type; Status = status; }
public MainService(MonitoredServices serviceCollection) { _serviceCollection = serviceCollection; }