public static string GetTemporaryQueueName(this IInMemoryBusFactoryConfigurator configurator, string prefix) { var sb = new StringBuilder(prefix); var host = HostMetadataCache.Host; foreach (var c in host.MachineName) { if (char.IsLetterOrDigit(c)) { sb.Append(c); } else if (c == '.' || c == '_' || c == '-' || c == ':') { sb.Append(c); } } sb.Append('-'); foreach (var c in host.ProcessName) { if (char.IsLetterOrDigit(c)) { sb.Append(c); } else if (c == '.' || c == '_' || c == '-' || c == ':') { sb.Append(c); } } sb.Append('-'); sb.Append(NewId.Next().ToString(_formatter)); return(sb.ToString()); }
/// <summary> /// Configure a service endpoint, allowing services to be configured on the endpoint /// </summary> /// <param name="busFactoryConfigurator"></param> /// <param name="serviceEndpointName">The queue name for the receive endpoint</param> /// <param name="configure"></param> public static void ServiceEndpoint(this IInMemoryBusFactoryConfigurator busFactoryConfigurator, string serviceEndpointName, Action <IInMemoryReceiveEndpointConfigurator> configure) { NewId instanceId = NewId.Next(); var instanceEndpointName = ServiceEndpointNameFormatter.Instance.EndpointName(instanceId); busFactoryConfigurator.ReceiveEndpoint(instanceEndpointName, configurator => { busFactoryConfigurator.ReceiveEndpoint(serviceEndpointName, endpointConfigurator => { string serviceInstanceEndpointName = ServiceEndpointNameFormatter.Instance.EndpointName(instanceId, serviceEndpointName); busFactoryConfigurator.ReceiveEndpoint(serviceInstanceEndpointName, instanceEndpointConfigurator => { var instance = new ServiceInstance(instanceId, configurator); IServiceEndpoint serviceEndpoint = new ServiceEndpoint(instance, endpointConfigurator, instanceEndpointConfigurator); serviceEndpoint.ConnectObservers(endpointConfigurator); configure(endpointConfigurator); serviceEndpoint.ConnectObservers(instanceEndpointConfigurator); configure(instanceEndpointConfigurator); }); }); }); }
static NameValueCollection GetDefaultConfiguration() { var configuration = new NameValueCollection { { "quartz.scheduler.instanceName", $"MassTransit-{NewId.Next().ToString(FormatUtil.Formatter)}" }, { "quartz.threadPool.maxConcurrency", Environment.ProcessorCount.ToString("F0") } }; return(configuration); }
/// <summary> /// Configure a service instance, which supports one or more receive endpoints, all of which are managed by conductor. /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> public static void ServiceInstance(this IInMemoryBusFactoryConfigurator configurator, Action <IServiceInstanceConfigurator <IInMemoryReceiveEndpointConfigurator> > configure) { var instanceId = NewId.Next(); var instanceEndpointName = ServiceEndpointNameFormatter.Instance.EndpointName(instanceId); configurator.ReceiveEndpoint(instanceEndpointName, endpointConfigurator => { var instance = new ServiceInstance(instanceId, endpointConfigurator); var instanceConfigurator = new InMemoryServiceInstanceConfigurator(configurator, instance); configure?.Invoke(instanceConfigurator); }); }