Beispiel #1
0
        /// <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 IBusFactoryConfigurator <TEndpointConfigurator> configurator,
                                                                   ServiceInstanceOptions options, Action <IServiceInstanceConfigurator <TEndpointConfigurator> > configure)
            where TEndpointConfigurator : IReceiveEndpointConfigurator
        {
            IServiceInstanceTransportConfigurator <TEndpointConfigurator> 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);
            }
        }
 public ServiceInstanceConfigurator(IBusFactoryConfigurator <TEndpointConfigurator> configurator,
                                    IServiceInstanceTransportConfigurator <TEndpointConfigurator> transportConfigurator,
                                    IServiceInstance instance,
                                    ServiceInstanceOptions options,
                                    TEndpointConfigurator instanceEndpointConfigurator = default)
 {
     _configurator          = configurator;
     _transportConfigurator = transportConfigurator;
     _instance = instance;
     _options  = options;
     _instanceEndpointConfigurator = instanceEndpointConfigurator;
 }