/// <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); }); }