public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; //apply custom config settings busConfiguration = configuration.GetConfiguration(run, routingTable); endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); bus = configuration.GetBus() ?? Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get <TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; return(Result.Success()); } catch (Exception ex) { Logger.Error($"Failed to initialize endpoint {endpointName}", ex); return(Result.Failure(ex)); } }
public Result Initialize(RunDescriptor run, EndpointBehaviour endpointBehaviour, IDictionary<Type, string> routingTable, string endpointName) { try { behaviour = endpointBehaviour; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehaviour.EndpointBuilderType)).Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { NServiceBus.Support.RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings endpointBehaviour.CustomConfig.ForEach(customAction => customAction(config)); config = configuration.GetConfiguration(run, routingTable); if (scenarioContext != null) { config.Configurer.RegisterSingleton(scenarioContext.GetType(), scenarioContext); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; } bus = config.CreateBus(); Configure.Instance.ForInstallationOn<Windows>().Install(); Task.Factory.StartNew(() => { while (!stopped) { contextChanged.WaitOne(TimeSpan.FromSeconds(5)); //we spin around each 5 s since the callback mechanism seems to be shaky lock (behaviour) { foreach (var when in behaviour.Whens) { if (executedWhens.Contains(when.Id)) continue; if(when.ExecuteAction(scenarioContext, bus)) executedWhens.Add(when.Id); } } } }); return Result.Success(); } catch (Exception ex) { Logger.Error("Failed to initalize endpoint " + endpointName, ex); return Result.Failure(ex); } }
public Result Initialize(RunDescriptor run, EndpointBehaviour endpointBehaviour, IDictionary <Type, string> routingTable, string endpointName) { try { behaviour = endpointBehaviour; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehaviour.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings endpointBehaviour.CustomConfig.ForEach(customAction => customAction(config)); config = configuration.GetConfiguration(run, routingTable); if (scenarioContext != null) { config.Configurer.RegisterSingleton(scenarioContext.GetType(), scenarioContext); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; } bus = config.CreateBus(); Configure.Instance.ForInstallationOn <Windows>().Install(); executeWhens = Task.Factory.StartNew(() => { while (!stopped) { if (!contextChanged.Wait(TimeSpan.FromSeconds(5))) //we spin around each 5s since the callback mechanism seems to be shaky { continue; } lock (behaviour) { foreach (var when in behaviour.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return(Result.Success()); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return(Result.Failure(ex)); } }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary<Type, string> routingTable, string endpointName) { try { runDescriptor = run; behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings var busConfiguration = configuration.GetConfiguration(run, routingTable); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); if (configuration.SendOnly) { sendOnlyBus = Bus.CreateSendOnly(busConfiguration); } else { bus = Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get<TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; } executeWhens = Task.Factory.StartNew(() => { while (!stopped) { //we spin around each 5s since the callback mechanism seems to be shaky contextChanged.Wait(TimeSpan.FromSeconds(5)); lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return Result.Success(); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return Result.Failure(ex); } }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { runDescriptor = run; behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings var busConfiguration = configuration.GetConfiguration(run, routingTable); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); if (configuration.SendOnly) { sendOnlyBus = Bus.CreateSendOnly(busConfiguration); } else { bus = Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get <TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; } executeWhens = Task.Factory.StartNew(() => { while (!stopped) { //we spin around each 5s since the callback mechanism seems to be shaky contextChanged.Wait(TimeSpan.FromSeconds(5)); lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return(Result.Success()); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return(Result.Failure(ex)); } }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary<Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory) Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings endpointBehavior.CustomConfig.ForEach(customAction => customAction(config)); config = configuration.GetConfiguration(run, routingTable); if (scenarioContext != null) { config.Configurer.RegisterSingleton(scenarioContext.GetType(), scenarioContext); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; } bus = config.CreateBus(); Configure.Instance.ForInstallationOn<Windows>().Install(); stopToken = stopSource.Token; if (behavior.Whens.Count == 0) { executeWhens = Task.FromResult(0); } else { executeWhens = Task.Factory.StartNew(async () => { var executedWhens = new List<Guid>(); while (!stopToken.IsCancellationRequested) { if (executedWhens.Count == behavior.Whens.Count) { break; } //we spin around each 5s since the callback mechanism seems to be shaky await contextChanged.WaitAsync(TimeSpan.FromSeconds(5), stopToken); if (stopToken.IsCancellationRequested) break; foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } }, stopToken).Unwrap(); } return Result.Success(); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return Result.Failure(ex); } }