/// <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="options"></param> /// <param name="configure"></param> public static void ServiceInstance <TEndpointConfigurator>(this IReceiveConfigurator <TEndpointConfigurator> configurator, ServiceInstanceOptions options, Action <IServiceInstanceConfigurator <TEndpointConfigurator> > configure) where TEndpointConfigurator : IReceiveEndpointConfigurator { var transportConfigurator = Cached <TEndpointConfigurator> .Instance; var instance = new ServiceInstance(); if (options.InstanceEndpointEnabled) { var definition = new InstanceEndpointDefinition(instance); configurator.ReceiveEndpoint(definition, options.EndpointNameFormatter, instanceEndpointConfigurator => { var instanceConfigurator = new ServiceInstanceConfigurator <TEndpointConfigurator>(configurator, transportConfigurator, instance, options, instanceEndpointConfigurator); configure?.Invoke(instanceConfigurator); }); } else { var instanceConfigurator = new ServiceInstanceConfigurator <TEndpointConfigurator>(configurator, transportConfigurator, instance, options); configure?.Invoke(instanceConfigurator); } }
/// <summary> /// Configure a service instance for use with the job service /// </summary> /// <param name="configurator"></param> /// <param name="options"></param> /// <param name="configure"></param> public static void ServiceInstance <TEndpointConfigurator>(this IBusFactoryConfigurator <TEndpointConfigurator> configurator, ServiceInstanceOptions options, Action <IServiceInstanceConfigurator <TEndpointConfigurator> > configure) where TEndpointConfigurator : IReceiveEndpointConfigurator { var instance = new ServiceInstance(); var definition = new InstanceEndpointDefinition(instance); configurator.ReceiveEndpoint(definition, options.EndpointNameFormatter, endpointConfigurator => { var instanceConfigurator = new ServiceInstanceConfigurator <TEndpointConfigurator>(configurator, options, endpointConfigurator); configure?.Invoke(instanceConfigurator); }); }
public void ReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter, Action <TEndpointConfigurator> configureEndpoint) { _configurator.ReceiveEndpoint(definition, endpointNameFormatter, endpointConfigurator => { var instanceDefinition = new InstanceEndpointDefinition(definition, _instance); _configurator.ReceiveEndpoint(instanceDefinition, endpointNameFormatter, instanceEndpointConfigurator => { ConfigureInstanceEndpoint(instanceEndpointConfigurator); IServiceEndpoint serviceEndpoint = new ServiceEndpoint(_instance, endpointConfigurator, instanceEndpointConfigurator); ConfigureServiceEndpoint(serviceEndpoint, endpointConfigurator, configureEndpoint); ConfigureServiceEndpoint(serviceEndpoint, instanceEndpointConfigurator, configureEndpoint); }); }); }
public void ReceiveEndpoint(IEndpointDefinition definition, IEndpointNameFormatter endpointNameFormatter = null, Action <IInMemoryReceiveEndpointConfigurator> configureEndpoint = null) { _configurator.ReceiveEndpoint(definition, endpointNameFormatter, endpointConfigurator => { var instanceDefinition = new InstanceEndpointDefinition(definition, _instance); _configurator.ReceiveEndpoint(instanceDefinition, endpointNameFormatter, instanceEndpointConfigurator => { IServiceEndpoint serviceEndpoint = new ServiceEndpoint(_instance, endpointConfigurator, instanceEndpointConfigurator); serviceEndpoint.ConnectObservers(endpointConfigurator); configureEndpoint(endpointConfigurator); serviceEndpoint.ConnectObservers(instanceEndpointConfigurator); configureEndpoint(instanceEndpointConfigurator); }); }); }