/// <summary> /// Creates a new ProcessorConfigurator to be configured as part of the current context /// </summary> /// <param name="configurer">configuration handler</param> /// <returns>Current instance, to be used in a fluent manner</returns> public BusConfigurator WithProcessor(Action <ProcessorConfigurator> configurer) { var processorConfigurator = new ProcessorConfigurator(this.Builder, configurer); this.processorConfigurators.Add(processorConfigurator); return(this); }
public static ProcessorConfigurator RegisterAggregateEventHandler <TMessage>(this ProcessorConfigurator processorConfigurator, string handlerName, Func <IAggregateEvent <TMessage>, Task> handlerFunc) { processorConfigurator.Configuring += processor => SubscribeAggregateEvent <TMessage, object>( processor, handlerName, (_, msg) => handlerFunc(msg), new object()); //dummy instance return(processorConfigurator); }
public static ProcessorConfigurator RegisterConditionalHandler <THandler>( this ProcessorConfigurator processorConfigurator, Func <bool> predicate, THandler instance = null) where THandler : class { if (!predicate()) { return(processorConfigurator); } return(processorConfigurator.RegisterHandler(instance)); }
/// <summary> /// Looks for methods with the signatures: /// On(ICommand<typeparamref name="T"/>) /// On(IEvent<typeparamref name="T"/>) /// On(IAggregateEvent<typeparamref name="T"/>) /// and susbscribes as message handler for the specific message Type /// </summary> /// <typeparam name="THandler">Type of the message handler</typeparam> /// <param name="processorConfigurator">processorConfigurator used to register handler</param> /// <param name="instance">optional instance</param> /// <remarks>When instance is not provided, an instance of THandler will be resolved with the IoC container /// <returns>List of message names subscribed by this handler</returns> public static ProcessorConfigurator RegisterHandler <THandler>(this ProcessorConfigurator processorConfigurator, THandler instance = null) where THandler : class { processorConfigurator.Configuring += processor => RegisterCQRSHandler <THandler>(processor, instance); // add this type to IoC known types, so that it can be resolved // not pretty, but it's a compromise.. processorConfigurator.Builder .IoCConfigurator .KnownTypes.Add(typeof(THandler)); return(processorConfigurator); }
public static ProcessorConfigurator RegisterConditionalEventHandler <TMessage>(this ProcessorConfigurator processorConfigurator, string handlerName, Func <bool> predicate, Func <IEvent <TMessage>, Task> handlerFunc) { if (!predicate()) { return(processorConfigurator); } return(processorConfigurator.RegisterEventHandler(handlerName, handlerFunc)); }