protected override void ConfigureSubscriptions(SubscriptionBusServiceConfigurator configurator) { configurator.StateMachineSaga(_machine, _repository, x => { x.RemoveWhenFinalized(); }); }
protected override void ConfigureSubscriptions(SubscriptionBusServiceConfigurator configurator) { _machine = new TestStateMachine(); _repository = new InMemorySagaRepository <Instance>(); configurator.StateMachineSaga(_machine, _repository); }
public static void LoadFrom(this SubscriptionBusServiceConfigurator configurator, ILifetimeScope scope) { IList <Type> concreteTypes = FindTypes <IConsumer>(scope, r => !r.Implements <ISaga>()); if (concreteTypes.Count != 0) { var consumerConfigurator = new AutofacConsumerFactoryConfigurator(configurator, scope); foreach (Type concreteType in concreteTypes) { consumerConfigurator.ConfigureConsumer(concreteType); } } IList <Type> sagaTypes = FindTypes <ISaga>(scope, x => true); if (sagaTypes.Count > 0) { var sagaConfigurator = new AutofacSagaRepositoryFactoryConfigurator(configurator, scope); foreach (Type type in sagaTypes) { sagaConfigurator.ConfigureSaga(type); } } }
public static void LoadFrom([NotNull] this SubscriptionBusServiceConfigurator configurator, [NotNull] Container container) { if (configurator == null) { throw new ArgumentNullException("configurator"); } if (container == null) { throw new ArgumentNullException("container"); } IList <Type> consumerTypes = FindTypes <IConsumer>(container, x => !x.Implements <ISaga>()); if (consumerTypes.Count > 0) { var consumerFactoryConfigurator = new SimpleInjectorConsumerFactoryConfigurator(configurator, container); foreach (Type consumerType in consumerTypes) { consumerFactoryConfigurator.ConfigureConsumer(consumerType); } } IList <Type> sagaTypes = FindTypes <ISaga>(container, x => true); if (sagaTypes.Count <= 0) { return; } var sagaFactoryConfigurator = new SimpleInjectorSagaFactoryConfigurator(configurator, container); foreach (Type sagaType in sagaTypes) { sagaFactoryConfigurator.ConfigureSaga(sagaType); } }
public static InstanceSubscriptionConfigurator CompensateActivityHost <TActivity, TLog>( this SubscriptionBusServiceConfigurator configurator, Func <TActivity> controllerFactory) where TActivity : CompensateActivity <TLog> where TLog : class { return(CompensateActivityHost <TActivity, TLog>(configurator, _ => controllerFactory())); }
public static void LoadFrom(this SubscriptionBusServiceConfigurator configurator, IUnityContainer container) { IList <Type> concreteTypes = FindTypes <IConsumer>(container, x => !x.Implements <ISaga>()); if (concreteTypes.Count > 0) { var consumerConfigurator = new UnityConsumerFactoryConfigurator(configurator, container); foreach (Type concreteType in concreteTypes) { consumerConfigurator.ConfigureConsumer(concreteType); } } IList <Type> sagaTypes = FindTypes <ISaga>(container, x => true); if (sagaTypes.Count > 0) { var sagaConfigurator = new UnitySagaFactoryConfigurator(configurator, container); foreach (Type type in sagaTypes) { sagaConfigurator.ConfigureSaga(type); } } }
/// <summary> /// Specify that the service bus should load its subscribers from the container passed as an argument. /// </summary> /// <param name="configurator">The configurator the extension method works on.</param> /// <param name="context">The Ninject kernel.</param> public static void LoadFrom(this SubscriptionBusServiceConfigurator configurator, IKernel context) { IList <Type> consumerTypes = FindTypes <IConsumer>(context, x => !x.Implements <ISaga>()); if (consumerTypes.Count > 0) { var consumerConfigurator = new NinjectConsumerFactoryConfigurator(configurator, context); foreach (Type type in consumerTypes) { consumerConfigurator.ConfigureConsumer(type); } } IList <Type> sagaTypes = FindTypes <ISaga>(context, x => true); if (sagaTypes.Count > 0) { var sagaConfigurator = new NinjectSagaFactoryConfigurator(configurator, context); foreach (Type type in sagaTypes) { sagaConfigurator.ConfigureSaga(type); } } }
/// <summary> /// 添加consumer /// 消费者停止消费消息后,将异常抛出,让消息回滚至原队列中 /// 等待下次处理 /// </summary> /// <typeparam name="TEvent">consumer的接收事件参数</typeparam> /// <typeparam name="TConsumer">consumer类型</typeparam> /// <param name="cfg">配置对象</param> /// <param name="handlerType">处理类型</param> protected void ConsumerTo <TEvent, TConsumer>(SubscriptionBusServiceConfigurator cfg, Type handlerType) where TConsumer : IEventConsumer <TEvent> where TEvent : Event { cfg.Handler <TEvent>(evnt => { try { if (_beforeConsumer != null) { _beforeConsumer.Execute(evnt); } _locator.GetInstance <TConsumer>().Consume(evnt); if (_afterConsumer != null) { _afterConsumer.Execute(evnt); } } catch (StopedConsumeException) { throw; } catch (Exception ex) { Log.Write(string.Format("执行{0}错误", typeof(TConsumer)), MessageType.Error, this.GetType(), ex); } }).Permanent(); }
public static InstanceSubscriptionConfigurator CompensateActivityHost <TActivity, TLog>( this SubscriptionBusServiceConfigurator configurator) where TActivity : CompensateActivity <TLog>, new() where TLog : class { return(CompensateActivityHost <TActivity, TLog>(configurator, DefaultConstructorCompensateActivityFactory <TActivity, TLog> .CompensateFactory)); }
public static ConsumerSubscriptionConfigurator <TConsumer> Consumer <TConsumer>( this SubscriptionBusServiceConfigurator configurator, IUnityContainer container) where TConsumer : class, IConsumer { var consumerFactory = new UnityConsumerFactory <TConsumer>(container); return(configurator.Consumer(consumerFactory)); }
public static ConsumerSubscriptionConfigurator <TConsumer> Consumer <TConsumer>( this SubscriptionBusServiceConfigurator configurator, ILifetimeScope scope) where TConsumer : class, IConsumer { var consumerFactory = new AutofacConsumerFactory <TConsumer>(scope); return(configurator.Consumer(consumerFactory)); }
public static ConsumerSubscriptionConfigurator <TConsumer> Consumer <TConsumer>( this SubscriptionBusServiceConfigurator configurator, IContainer kernel) where TConsumer : class { var consumerFactory = new StructureMapConsumerFactory <TConsumer>(kernel); return(configurator.Consumer(consumerFactory)); }
public static ConsumerSubscriptionConfigurator <TConsumer> Consumer <TConsumer>( this SubscriptionBusServiceConfigurator configurator, IKernel kernel) where TConsumer : class, IConsumer { var consumerFactory = new NinjectConsumerFactory <TConsumer>(kernel); return(configurator.Consumer(consumerFactory)); }
public static void LoadFrom(this SubscriptionBusServiceConfigurator configurator, IKernel kernel) { var ex = new NotImplementedByNinjectException("Ninject does not support this option. See https://github.com/ninject/ninject/issues/35"); ex.HelpLink = "https://github.com/ninject/ninject/issues/35"; throw ex; }
/// <summary> /// Subscribe an observer to a message on the service bus /// </summary> /// <typeparam name="T">The message type</typeparam> /// <param name="configurator"></param> /// <param name="observer">The observer to subscribe</param> /// <returns>The subscription configurator</returns> public static InstanceSubscriptionConfigurator Observe <T>(this SubscriptionBusServiceConfigurator configurator, IObserver <T> observer) where T : class { var consumer = new ObserverInstanceConsumer <T>(observer); return(configurator.Instance(consumer)); }
public static InstanceSubscriptionConfigurator ExecuteActivityHost <TActivity, TArguments>( this SubscriptionBusServiceConfigurator configurator, Uri compensateAddress) where TActivity : ExecuteActivity <TArguments>, new() where TArguments : class { return(ExecuteActivityHost <TActivity, TArguments>(configurator, compensateAddress, DefaultConstructorExecuteActivityFactory <TActivity, TArguments> .ExecuteFactory)); }
public static InstanceSubscriptionConfigurator ExecuteActivityHost <TActivity, TArguments>( this SubscriptionBusServiceConfigurator configurator, Uri compensateAddress, Func <TActivity> controllerFactory) where TActivity : ExecuteActivity <TArguments> where TArguments : class { return(ExecuteActivityHost <TActivity, TArguments>(configurator, compensateAddress, _ => controllerFactory())); }
public static InstanceSubscriptionConfigurator CompensateActivityHost <TActivity, TLog>( this SubscriptionBusServiceConfigurator configurator, CompensateActivityFactory <TLog> factory) where TActivity : CompensateActivity <TLog> where TLog : class { var host = new CompensateActivityHost <TActivity, TLog>(factory); return(configurator.Instance(host)); }
public static SagaSubscriptionConfigurator <TSaga> Saga <TSaga>( this SubscriptionBusServiceConfigurator configurator, IKernel kernel) where TSaga : class, ISaga { var sagaRepository = kernel.Get <ISagaRepository <TSaga> >(); var ninjectSagaRepository = new NinjectSagaRepository <TSaga>(sagaRepository, kernel); return(configurator.Saga(ninjectSagaRepository)); }
public static SagaSubscriptionConfigurator <TSaga> Saga <TSaga>( this SubscriptionBusServiceConfigurator configurator, IContainer container) where TSaga : class, ISaga { var sagaRepository = container.GetInstance <ISagaRepository <TSaga> >(); var structureMapSagaRepository = new StructureMapSagaRepository <TSaga>(sagaRepository, container); return(configurator.Saga(structureMapSagaRepository)); }
public static InstanceSubscriptionConfigurator ExecuteActivityHost <TActivity, TArguments>( this SubscriptionBusServiceConfigurator configurator, Uri compensateAddress, ExecuteActivityFactory <TArguments> factory) where TActivity : ExecuteActivity <TArguments> where TArguments : class { var host = new ExecuteActivityHost <TActivity, TArguments>(compensateAddress, factory); return(configurator.Instance(host)); }
public static InstanceSubscriptionConfigurator CompensateActivityHost <TActivity, TLog>( this SubscriptionBusServiceConfigurator configurator, Func <TLog, TActivity> controllerFactory) where TActivity : CompensateActivity <TLog> where TLog : class { var factory = new FactoryMethodCompensateActivityFactory <TActivity, TLog>(controllerFactory); var host = new CompensateActivityHost <TActivity, TLog>(factory); return(configurator.Instance(host)); }
/// <summary> /// Registers a saga using the container that has the repository resolved from the container /// </summary> /// <typeparam name="TSaga"></typeparam> /// <param name="configurator"></param> /// <param name="scope"></param> /// <returns></returns> public static SagaSubscriptionConfigurator <TSaga> Saga <TSaga>( this SubscriptionBusServiceConfigurator configurator, ILifetimeScope scope, string name = "message") where TSaga : class, ISaga { var sagaRepository = scope.Resolve <ISagaRepository <TSaga> >(); var autofacSagaRepository = new AutofacSagaRepository <TSaga>(sagaRepository, scope, name); return(configurator.Saga(autofacSagaRepository)); }
public static SagaSubscriptionConfigurator <TSaga> Saga <TSaga>( this SubscriptionBusServiceConfigurator configurator, IUnityContainer container) where TSaga : class, ISaga { var sagaRepository = container.Resolve <ISagaRepository <TSaga> >(); var unitySagaRepository = new UnitySagaRepository <TSaga>(sagaRepository, container); return(configurator.Saga(unitySagaRepository)); }
protected override void ConfigureSubscriptions(SubscriptionBusServiceConfigurator configurator) { _machine = new TestStateMachine(); _repository = new InMemorySagaRepository <Instance>(); configurator.StateMachineSaga(_machine, _repository, x => { x.Correlate(_machine.Started, (i, d) => i.ServiceName == d.ServiceName) .SelectCorrelationId(msg => msg.ServiceId); }); }
public static IServiceBusConfigurator Subscribe(this IServiceBusConfigurator configurator, Action <ISubscriptionBusServiceConfigurator> configure) { var subscriptionConfigurator = new SubscriptionBusServiceConfigurator(); configure(subscriptionConfigurator); configurator.AddBusConfigurator(subscriptionConfigurator); return(configurator); }
/// <summary> /// Subscribes an object instance to the bus /// </summary> /// <param name="configurator"></param> /// <param name="instance"></param> /// <returns></returns> public static InstanceSubscriptionConfigurator Instance( [NotNull] this SubscriptionBusServiceConfigurator configurator, [NotNull] object instance) { var instanceConfigurator = new InstanceSubscriptionConfiguratorImpl(instance); var busServiceConfigurator = new SubscriptionBusServiceBuilderConfiguratorImpl(instanceConfigurator); configurator.AddConfigurator(busServiceConfigurator); return(instanceConfigurator); }
public static HandlerSubscriptionConfigurator <T> Handler <T>(this SubscriptionBusServiceConfigurator configurator, Action <IConsumeContext <T>, T> handler) where T : class { var handlerConfigurator = new HandlerSubscriptionConfiguratorImpl <T>(handler); var busServiceConfigurator = new SubscriptionBusServiceBuilderConfiguratorImpl(handlerConfigurator); configurator.AddConfigurator(busServiceConfigurator); return(handlerConfigurator); }
public static ConsumerSubscriptionConfigurator <TConsumer> InterceptingConsumer <TConsumer>( [NotNull] this SubscriptionBusServiceConfigurator configurator, [NotNull] IConsumerFactory <TConsumer> consumerFactory, [NotNull] Action <Action> interceptor) where TConsumer : class, IConsumer { if (_log.IsDebugEnabled) { _log.DebugFormat("Subscribing Intercepting Consumer: {0} (using supplied consumer factory)", typeof(TConsumer)); } var interceptingConsumerFactory = new InterceptingConsumerFactory <TConsumer>(consumerFactory, interceptor); return(configurator.Consumer(interceptingConsumerFactory)); }
/// <summary> /// Load the saga of the generic type from the windsor container, /// by loading it directly from the container. /// </summary> /// <typeparam name="TSaga">The type of the saga</typeparam> /// <param name="configurator">The configurator</param> /// <param name="container">The windsor container</param> /// <returns>The configurator</returns> public static SagaSubscriptionConfigurator <TSaga> Saga <TSaga>( [NotNull] this SubscriptionBusServiceConfigurator configurator, [NotNull] IWindsorContainer container) where TSaga : class, ISaga { if (configurator == null) { throw new ArgumentNullException("configurator"); } if (container == null) { throw new ArgumentNullException("container"); } return(configurator.Saga(container.Resolve <ISagaRepository <TSaga> >())); }
protected override void SubscribeLocalBus(SubscriptionBusServiceConfigurator subscriptionBusServiceConfigurator) { subscriptionBusServiceConfigurator.LoadFrom(_container); }
protected virtual void ConfigureSubscriptions(SubscriptionBusServiceConfigurator configurator) { }
protected abstract void SubscribeLocalBus(SubscriptionBusServiceConfigurator subscriptionBusServiceConfigurator);
protected override void SubscribeLocalBus(SubscriptionBusServiceConfigurator subscriptionBusServiceConfigurator) { // we have to do this explicitly, since the metadata is not exposed by Ninject subscriptionBusServiceConfigurator.Saga<SimpleSaga>(_container); }