コード例 #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 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);
            }
        }
コード例 #2
0
        /// <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);
            });
        }
コード例 #3
0
        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);
                });
            });
        }
コード例 #4
0
        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);
                });
            });
        }