public void ConfigureEndpoints <T>(IReceiveConfigurator <T> configurator, IEndpointNameFormatter endpointNameFormatter = null) where T : IReceiveEndpointConfigurator { ConfigureEndpoints(configurator, endpointNameFormatter, NoFilter); }
string IEndpointDefinition.GetEndpointName(IEndpointNameFormatter formatter) { var endpointName = _definition.GetEndpointName(formatter); return(ServiceEndpointNameFormatter.Instance.InstanceServiceEndpointName(endpointName, _instance.InstanceName, formatter)); }
public abstract HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IReceiveEndpointConfigurator> configureEndpoint = null);
string IExecuteActivityDefinition.GetExecuteEndpointName(IEndpointNameFormatter formatter) { return(_endpointDefinition.GetEndpointName(formatter)); }
HostReceiveEndpointHandle IReceiveConnector <IAmazonSqsReceiveEndpointConfigurator> .ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IAmazonSqsReceiveEndpointConfigurator> configureEndpoint) { if (_host == null) { throw new InvalidOperationException("The host is not ready."); } return(_host.ConnectReceiveEndpoint(definition, endpointNameFormatter, configureEndpoint)); }
/// <summary> /// Connect a response endpoint for the host /// </summary> /// <param name="connector">The host to connect</param> /// <param name="endpointNameFormatter"></param> /// <param name="configureEndpoint">The configuration callback</param> public static HostReceiveEndpointHandle ConnectResponseEndpoint(this IReceiveConnector connector, IEndpointNameFormatter endpointNameFormatter = null, Action <IReceiveEndpointConfigurator> configureEndpoint = null) { return(connector.ConnectReceiveEndpoint(new ResponseEndpointDefinition(), endpointNameFormatter, configureEndpoint)); }
public string GetEndpointName(IEndpointNameFormatter formatter) { return(RabbitMqExchangeNames.ReplyTo); }
protected abstract string FormatEndpointName(IEndpointNameFormatter formatter);
public override HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IReceiveEndpointConfigurator> configureEndpoint = null) { throw new NotImplementedException(); }
/// <summary> /// Configure the endpoints for all defined consumer, saga, and activity types using an optional /// endpoint name formatter. If no endpoint name formatter is specified and an <see cref="IEndpointNameFormatter" /> /// is registered in the container, it is resolved from the container. Otherwise, the <see cref="DefaultEndpointNameFormatter" /> /// is used. /// </summary> /// <param name="configurator">The <see cref="IBusFactoryConfigurator" /> for the bus being configured</param> /// <param name="registration">The registration for this bus instance</param> /// <param name="configureFilter">Filter the configured consumers, sagas, and activities</param> /// <param name="endpointNameFormatter">Optional, the endpoint name formatter</param> /// <typeparam name="T">The bus factory type (depends upon the transport)</typeparam> public static void ConfigureEndpoints <T>(this IReceiveConfigurator <T> configurator, IBusRegistrationContext registration, Action <IRegistrationFilterConfigurator> configureFilter, IEndpointNameFormatter endpointNameFormatter = null) where T : IReceiveEndpointConfigurator { registration.ConfigureEndpoints(configurator, endpointNameFormatter, configureFilter); }
public string GetEndpointName(IEndpointNameFormatter formatter) { return(_endpointName ?? (_endpointName = string.IsNullOrWhiteSpace(_settings.Name) ? FormatEndpointName(formatter) : _settings.Name)); }
public override string GetEndpointName(IEndpointNameFormatter formatter) { return(formatter.TemporaryEndpoint($"signalr_{_hubName.Value}")); }
string IEndpointDefinition.GetEndpointName(IEndpointNameFormatter formatter) { return(_configuration.Queue); }
public void ConfigureEndpoints <T>(IReceiveConfigurator <T> configurator, IEndpointNameFormatter endpointNameFormatter, Action <IRegistrationFilterConfigurator> configureFilter) where T : IReceiveEndpointConfigurator { endpointNameFormatter ??= GetService <IEndpointNameFormatter>() ?? DefaultEndpointNameFormatter.Instance; var configureReceiveEndpoint = GetConfigureReceiveEndpoints(); var builder = new RegistrationFilterConfigurator(); configureFilter?.Invoke(builder); var registrationFilter = builder.Filter; List <IGrouping <string, IConsumerDefinition> > consumersByEndpoint = Consumers.Values .Where(x => registrationFilter.Matches(x) && !WasConfigured(x.ConsumerType)) .Select(x => x.GetDefinition(this)) .GroupBy(x => x.GetEndpointName(endpointNameFormatter)) .ToList(); List <IGrouping <string, ISagaDefinition> > sagasByEndpoint = Sagas.Values .Where(x => registrationFilter.Matches(x) && !WasConfigured(x.SagaType)) .Select(x => x.GetDefinition(this)) .GroupBy(x => x.GetEndpointName(endpointNameFormatter)) .ToList(); List <IActivityDefinition> activities = Activities.Values .Where(x => registrationFilter.Matches(x) && !WasConfigured(x.ActivityType)) .Select(x => x.GetDefinition(this)) .ToList(); List <IGrouping <string, IActivityDefinition> > activitiesByExecuteEndpoint = activities .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter)) .ToList(); List <IGrouping <string, IActivityDefinition> > activitiesByCompensateEndpoint = activities .GroupBy(x => x.GetCompensateEndpointName(endpointNameFormatter)) .ToList(); List <IGrouping <string, IExecuteActivityDefinition> > executeActivitiesByEndpoint = ExecuteActivities.Values .Where(x => registrationFilter.Matches(x) && !WasConfigured(x.ActivityType)) .Select(x => x.GetDefinition(this)) .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter)) .ToList(); var endpointsWithName = _endpoints.Values .Select(x => x.GetDefinition(this)) .Select(x => new { Name = x.GetEndpointName(endpointNameFormatter), Definition = x }) .GroupBy(x => x.Name, (name, values) => new { Name = name, Definition = values.Select(x => x.Definition).Combine() }) .ToList(); IEnumerable <string> endpointNames = consumersByEndpoint.Select(x => x.Key) .Union(sagasByEndpoint.Select(x => x.Key)) .Union(activitiesByExecuteEndpoint.Select(x => x.Key)) .Union(executeActivitiesByEndpoint.Select(x => x.Key)) .Union(endpointsWithName.Select(x => x.Name)) .Except(activitiesByCompensateEndpoint.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() join ep in endpointsWithName on e equals ep.Name into eps from ep in eps.Select(x => x.Definition) .DefaultIfEmpty(c?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x, x.EndpointDefinition)).Combine() ?? s?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x, x.EndpointDefinition)).Combine() ?? a?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x, x.ExecuteEndpointDefinition)).Combine() ?? ea?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x, x.ExecuteEndpointDefinition)).Combine() ?? new NamedEndpointDefinition(e)) select new { Name = e, Definition = ep, Consumers = c, Sagas = s, Activities = a, ExecuteActivities = ea }; foreach (var endpoint in endpoints) { configurator.ReceiveEndpoint(endpoint.Definition, endpointNameFormatter, cfg => { configureReceiveEndpoint.Configure(endpoint.Definition.GetEndpointName(endpointNameFormatter), cfg); if (endpoint.Consumers != null) { foreach (var consumer in endpoint.Consumers) { ConfigureConsumer(consumer.ConsumerType, cfg); } } if (endpoint.Sagas != null) { foreach (var saga in endpoint.Sagas) { ConfigureSaga(saga.SagaType, cfg); } } if (endpoint.Activities != null) { foreach (var activity in endpoint.Activities) { var compensateEndpointName = activity.GetCompensateEndpointName(endpointNameFormatter); var compensateDefinition = activity.CompensateEndpointDefinition ?? endpointsWithName.SingleOrDefault(x => x.Name == compensateEndpointName)?.Definition; if (compensateDefinition != null) { configurator.ReceiveEndpoint(compensateDefinition, endpointNameFormatter, compensateEndpointConfigurator => { configureReceiveEndpoint.Configure(compensateDefinition.GetEndpointName(endpointNameFormatter), cfg); ConfigureActivity(activity.ActivityType, cfg, compensateEndpointConfigurator); }); } else { configurator.ReceiveEndpoint(compensateEndpointName, compensateEndpointConfigurator => { configureReceiveEndpoint.Configure(compensateEndpointName, cfg); ConfigureActivity(activity.ActivityType, cfg, compensateEndpointConfigurator); }); } } } if (endpoint.ExecuteActivities != null) { foreach (var activity in endpoint.ExecuteActivities) { ConfigureExecuteActivity(activity.ActivityType, cfg); } } }); } }
public void ConfigureEndpoints <T>(T configurator, IEndpointNameFormatter endpointNameFormatter) where T : IReceiveConfigurator { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } if (endpointNameFormatter == null) { endpointNameFormatter = _configurationServiceProvider.GetService <IEndpointNameFormatter>() ?? DefaultEndpointNameFormatter.Instance; } 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 activities = _activities.Values .Select(x => x.GetDefinition(_configurationServiceProvider)) .ToArray(); var activitiesByExecuteEndpoint = activities .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter)); var activitiesByCompensateEndpoint = activities .GroupBy(x => x.GetCompensateEndpointName(endpointNameFormatter)); var executeActivitiesByEndpoint = _executeActivities.Values .Select(x => x.GetDefinition(_configurationServiceProvider)) .GroupBy(x => x.GetExecuteEndpointName(endpointNameFormatter)); var endpointsWithName = _endpoints.Values .Select(x => x.GetDefinition(_configurationServiceProvider)) .Select(x => new { Definition = x, Name = x.GetEndpointName(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)) .Union(endpointsWithName.Select(x => x.Name)) .Except(activitiesByCompensateEndpoint.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() join ep in endpointsWithName on e equals ep.Name into eps from ep in eps.Select(x => x.Definition) .DefaultIfEmpty(c?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x)).SingleOrDefault() ?? s?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x)).SingleOrDefault() ?? a?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x)).SingleOrDefault() ?? ea?.Select(x => (IEndpointDefinition) new DelegateEndpointDefinition(e, x)).SingleOrDefault() ?? new NamedEndpointDefinition(e)) select new { Name = e, Definition = ep, Consumers = c, Sagas = s, Activities = a, ExecuteActivities = ea }; foreach (var endpoint in endpoints) { configurator.ReceiveEndpoint(endpoint.Definition, endpointNameFormatter, cfg => { if (endpoint.Consumers != null) { foreach (var consumer in endpoint.Consumers) { LogContext.Debug?.Log("Configuring consumer {ConsumerType} on {Endpoint}", TypeMetadataCache.GetShortName(consumer.ConsumerType), endpoint.Name); ConfigureConsumer(consumer.ConsumerType, cfg); } } if (endpoint.Sagas != null) { foreach (var saga in endpoint.Sagas) { LogContext.Debug?.Log("Configuring saga {SagaType} on {Endpoint}", 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); var compensateDefinition = endpointsWithName.SingleOrDefault(x => x.Name == compensateEndpointName)?.Definition; if (compensateDefinition != null) { configurator.ReceiveEndpoint(compensateDefinition, endpointNameFormatter, compensateEndpointConfigurator => { LogContext.Debug?.Log("Configuring receive endpoint {Endpoint}", ToEndpointString(compensateEndpointName, compensateDefinition)); LogContext.Debug?.Log("Configuring activity {ActivityType} on {ExecuteEndpoint} / {CompensateEndpoint}", TypeMetadataCache.GetShortName(activity.ActivityType), endpoint.Name, compensateEndpointName); ConfigureActivity(activity.ActivityType, cfg, compensateEndpointConfigurator); }); } else { configurator.ReceiveEndpoint(compensateEndpointName, compensateEndpointConfigurator => { LogContext.Debug?.Log("Configuring activity {ActivityType} on {ExecuteEndpoint} / {CompensateEndpoint}", TypeMetadataCache.GetShortName(activity.ActivityType), endpoint.Name, compensateEndpointName); ConfigureActivity(activity.ActivityType, cfg, compensateEndpointConfigurator); }); } } } if (endpoint.ExecuteActivities != null) { foreach (var activity in endpoint.ExecuteActivities) { LogContext.Debug?.Log("Configuring activity {ActivityType} on {ExecuteEndpoint}", TypeMetadataCache.GetShortName(activity.ActivityType), endpoint.Name); ConfigureExecuteActivity(activity.ActivityType, cfg); } } }); } }
public string GetEndpointName(IEndpointNameFormatter formatter) { return(_definitions.FirstOrDefault()?.GetEndpointName(formatter)); }
/// <summary> /// Configure the endpoints for all defined consumer, saga, and activity types using an optional /// endpoint name formatter. If no endpoint name formatter is specified and an <see cref="IEndpointNameFormatter"/> /// is registered in the container, it is resolved from the container. Otherwise, the <see cref="DefaultEndpointNameFormatter"/> /// is used. /// </summary> /// <param name="configurator">The <see cref="IBusFactoryConfigurator"/> for the bus being configured</param> /// <param name="context">The container reference</param> /// <param name="endpointNameFormatter">Optional, the endpoint name formatter</param> /// <typeparam name="T">The bus factory type (depends upon the transport)</typeparam> public static void ConfigureEndpoints <T>(this T configurator, IComponentContext context, IEndpointNameFormatter endpointNameFormatter = null) where T : IReceiveConfigurator { var registration = context.Resolve <IRegistration>(); registration.ConfigureEndpoints(configurator, endpointNameFormatter); }
/// <summary> /// Configure the endpoints for all defined consumer, saga, and activity types using an optional /// endpoint name formatter. If no endpoint name formatter is specified and an <see cref="IEndpointNameFormatter"/> /// is registered in the container, it is resolved from the container. Otherwise, the <see cref="DefaultEndpointNameFormatter"/> /// is used. /// </summary> /// <param name="configurator">The <see cref="IBusFactoryConfigurator"/> for the bus being configured</param> /// <param name="provider">The container reference</param> /// <param name="endpointNameFormatter">Optional, the endpoint name formatter</param> /// <typeparam name="T">The bus factory type (depends upon the transport)</typeparam> public static void ConfigureEndpoints <T>(this T configurator, IServiceProvider provider, IEndpointNameFormatter endpointNameFormatter = null) where T : IReceiveConfigurator { var registration = provider.GetRequiredService <IRegistration>(); registration.ConfigureEndpoints(configurator, endpointNameFormatter); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IBusRegistrationContext, IReceiveEndpointConfigurator> configure = null) { return(BusControl.ConnectReceiveEndpoint(definition, endpointNameFormatter, configurator => { _busRegistrationContext.GetConfigureReceiveEndpoints().Configure(definition.GetEndpointName(endpointNameFormatter), configurator); configure?.Invoke(_busRegistrationContext, configurator); })); }
public override string GetEndpointName(IEndpointNameFormatter formatter) { return(formatter.TemporaryEndpoint($"signalr_{typeof(THub).Name}")); }
string IActivityDefinition.GetCompensateEndpointName(IEndpointNameFormatter formatter) { return(_compensateEndpointDefinition.GetEndpointName(formatter)); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter = null, Action <IServiceBusReceiveEndpointConfigurator> configureEndpoint = null) { var queueName = definition.GetEndpointName(endpointNameFormatter ?? DefaultEndpointNameFormatter.Instance); return(ConnectReceiveEndpoint(queueName, configurator => { _hostConfiguration.ApplyEndpointDefinition(configurator, definition); configureEndpoint?.Invoke(configurator); })); }
HostReceiveEndpointHandle IReceiveConnector.ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IReceiveEndpointConfigurator> configureEndpoint) { return(_host.ConnectReceiveEndpoint(definition, endpointNameFormatter, configureEndpoint)); }
public void SetEndpointNameFormatter(IEndpointNameFormatter endpointNameFormatter) { Registrar.RegisterSingleInstance(endpointNameFormatter); }
void IReceiveConfigurator.ReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IReceiveEndpointConfigurator> configureEndpoint) { ReceiveEndpoint(definition, endpointNameFormatter, x => configureEndpoint(x)); }
protected override string FormatEndpointName(IEndpointNameFormatter formatter) { return(formatter.Consumer <TConsumer>()); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IInMemoryReceiveEndpointConfigurator> configureEndpoint = null) { var queueName = definition.GetEndpointName(endpointNameFormatter ?? DefaultEndpointNameFormatter.Instance); return(ConnectReceiveEndpoint(queueName, x => x.Apply(definition, configureEndpoint))); }
string IEndpointDefinition.GetEndpointName(IEndpointNameFormatter formatter) { return(ServiceEndpointNameFormatter.Instance.InstanceEndpointName(_instance.InstanceName, formatter)); }
public override HostReceiveEndpointHandle ConnectReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <IReceiveEndpointConfigurator> configureEndpoint = null) { return(ConnectReceiveEndpoint(definition, endpointNameFormatter, configureEndpoint)); }
public BurgerItineraryPlanner(IEndpointNameFormatter formatter, ConsumeContext consumeContext) { _consumeContext = consumeContext; _grillAddress = new Uri($"exchange:{formatter.ExecuteActivity<GrillBurgerActivity, GrillBurgerArguments>()}"); _dressAddress = new Uri($"exchange:{formatter.ExecuteActivity<DressBurgerActivity, DressBurgerArguments>()}"); }