Esempio n. 1
0
        public void Should_include_the_prefix_default_with_separator()
        {
            var formatter = new DefaultEndpointNameFormatter("Dev-", false);

            var name = formatter.Consumer <SomeReallyCoolConsumer>();

            Assert.That(name, Is.EqualTo("Dev-SomeReallyCool"));
        }
Esempio n. 2
0
        public void ConfigureEndpoints <T>(T configurator, IEndpointNameFormatter endpointNameFormatter)
            where T : IBusFactoryConfigurator
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            if (endpointNameFormatter == null)
            {
                endpointNameFormatter = new DefaultEndpointNameFormatter();
            }

            var consumersByEndpoint = _consumers.Values
                                      .Select(x => x.GetDefinition(_configurationServiceProvider))
                                      .GroupBy(x => x.GetEndpointName(endpointNameFormatter));

            var sagasByEndpoint = _sagas.Values
                                  .Select(x => x.GetDefinition(_configurationServiceProvider))
                                  .GroupBy(x => x.GetEndpointName(endpointNameFormatter));

            var activitiesByExecuteEndpoint = _activities.Values
                                              .Select(x => x.GetDefinition(_configurationServiceProvider))
                                              .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter));

            var executeActivitiesByEndpoint = _executeActivities.Values
                                              .Select(x => x.GetDefinition(_configurationServiceProvider))
                                              .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter));

            var endpointNames = consumersByEndpoint.Select(x => x.Key)
                                .Union(sagasByEndpoint.Select(x => x.Key))
                                .Union(activitiesByExecuteEndpoint.Select(x => x.Key))
                                .Union(executeActivitiesByEndpoint.Select(x => x.Key));

            var endpoints =
                from e in endpointNames
                join c in consumersByEndpoint on e equals c.Key into cs
                from c in cs.DefaultIfEmpty()
                join s in sagasByEndpoint on e equals s.Key into ss
                from s in ss.DefaultIfEmpty()
                join a in activitiesByExecuteEndpoint on e equals a.Key into aes
                from a in aes.DefaultIfEmpty()
                join ea in executeActivitiesByEndpoint on e equals ea.Key into eas
                from ea in eas.DefaultIfEmpty()
                select new { Name = e, Consumers = c, Sagas = s, Activities = a, ExecuteActivities = ea };

            foreach (var endpoint in endpoints)
            {
                if (_log.IsDebugEnabled)
                {
                    _log.DebugFormat("Configuring receive endpoint: {0}", endpoint.Name);
                }

                configurator.ReceiveEndpoint(endpoint.Name, cfg =>
                {
                    if (endpoint.Consumers != null)
                    {
                        foreach (var consumer in endpoint.Consumers)
                        {
                            if (_log.IsDebugEnabled)
                            {
                                _log.DebugFormat("Configuring consumer {0} on {1}", TypeMetadataCache.GetShortName(consumer.ConsumerType), endpoint.Name);
                            }

                            ConfigureConsumer(consumer.ConsumerType, cfg);
                        }
                    }

                    if (endpoint.Sagas != null)
                    {
                        foreach (var saga in endpoint.Sagas)
                        {
                            if (_log.IsDebugEnabled)
                            {
                                _log.DebugFormat("Configuring saga {0} on {1}", TypeMetadataCache.GetShortName(saga.SagaType), endpoint.Name);
                            }

                            ConfigureSaga(saga.SagaType, cfg);
                        }
                    }

                    if (endpoint.Activities != null)
                    {
                        foreach (var activity in endpoint.Activities)
                        {
                            var compensateEndpointName = activity.GetCompensateEndpointName(endpointNameFormatter);

                            configurator.ReceiveEndpoint(compensateEndpointName, compensateEndpointConfigurator =>
                            {
                                if (_log.IsDebugEnabled)
                                {
                                    _log.DebugFormat("Configuring activity {0} on {1}/{2}", TypeMetadataCache.GetShortName(activity.ActivityType),
                                                     endpoint.Name, compensateEndpointName);
                                }

                                ConfigureActivity(activity.ActivityType, cfg, compensateEndpointConfigurator);
                            });
                        }
                    }

                    if (endpoint.ExecuteActivities != null)
                    {
                        foreach (var activity in endpoint.ExecuteActivities)
                        {
                            if (_log.IsDebugEnabled)
                            {
                                _log.DebugFormat("Configuring activity {0} on {1}", TypeMetadataCache.GetShortName(activity.ActivityType), endpoint.Name);
                            }

                            ConfigureExecuteActivity(activity.ActivityType, cfg);
                        }
                    }
                });
            }
        }