Beispiel #1
0
        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);
            });
        }