public FaultedScheduleActivity(AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
                                Schedule <TInstance, TMessage> schedule, ScheduleTimeExceptionProvider <TInstance, TException> timeProvider,
                                Action <SendContext <TMessage> > contextCallback)
     : this(schedule, timeProvider, contextCallback)
 {
     _asyncMessageFactory = messageFactory;
 }
 public FaultedSendActivity(DestinationAddressProvider <TInstance> destinationAddressProvider,
                            AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
                            SendContextCallback <TInstance, TMessage> contextCallback)
     : this(messageFactory, contextCallback)
 {
     _destinationAddressProvider = destinationAddressProvider;
 }
示例#3
0
 public FaultedRequestActivity(Request <TInstance, TRequest, TResponse> request,
                               AsyncEventExceptionMessageFactory <TInstance, TException, TRequest> messageFactory)
     : base(request)
 {
     _asyncMessageFactory    = messageFactory;
     _serviceAddressProvider = context => request.Settings.ServiceAddress;
 }
示例#4
0
 public FaultedProduceActivity(ExceptionEventHubNameProvider <TInstance, TException> nameProvider,
                               AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
                               Action <EventHubSendContext <TMessage> > contextCallback)
 {
     _nameProvider        = nameProvider;
     _asyncMessageFactory = messageFactory;
     _pipe = contextCallback != null?Pipe.Execute(contextCallback) : Pipe.Empty <EventHubSendContext <TMessage> >();
 }
 public static ExceptionActivityBinder <TInstance, TException> SendAsync <TInstance, TException, TMessage>(
     this ExceptionActivityBinder <TInstance, TException> source,
     AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory, Action <SendContext <TMessage> > contextCallback = null)
     where TInstance : class, SagaStateMachineInstance
     where TMessage : class
     where TException : Exception
 {
     return(source.Add(new FaultedSendActivity <TInstance, TException, TMessage>(messageFactory, contextCallback)));
 }
示例#6
0
 public static ExceptionActivityBinder <TInstance, TException> Schedule <TInstance, TException, TMessage>(
     this ExceptionActivityBinder <TInstance, TException> source, Schedule <TInstance, TMessage> schedule,
     AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
     ScheduleTimeExceptionProvider <TInstance, TException> timeProvider, Action <SendContext <TMessage> > contextCallback = null)
     where TInstance : class, SagaStateMachineInstance
     where TException : Exception
     where TMessage : class
 {
     return(source.Add(new FaultedScheduleActivity <TInstance, TException, TMessage>(messageFactory, schedule, timeProvider, contextCallback)));
 }
 public static ExceptionActivityBinder <TInstance, TException> Produce <TInstance, TException, TMessage>(
     this ExceptionActivityBinder <TInstance, TException> source, ExceptionEventHubNameProvider <TInstance, TException> nameProvider,
     AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
     Action <EventHubSendContext <TMessage> > contextCallback = null)
     where TInstance : class, SagaStateMachineInstance
     where TMessage : class
     where TException : Exception
 {
     return(source.Add(new FaultedProduceActivity <TInstance, TException, TMessage>(nameProvider, messageFactory, contextCallback)));
 }
示例#8
0
        /// <summary>
        /// Send a request to the configured service endpoint, and setup the state machine to accept the response.
        /// </summary>
        /// <typeparam name="TInstance">The state instance type</typeparam>
        /// <typeparam name="TRequest">The request message type</typeparam>
        /// <typeparam name="TResponse">The response message type</typeparam>
        /// <typeparam name="TException"></typeparam>
        /// <param name="binder">The event binder</param>
        /// <param name="request">The configured request to use</param>
        /// <param name="messageFactory">The request message factory</param>
        /// <returns></returns>
        public static ExceptionActivityBinder <TInstance, TException> Request <TInstance, TException, TRequest, TResponse>(
            this ExceptionActivityBinder <TInstance, TException> binder, Request <TInstance, TRequest, TResponse> request,
            AsyncEventExceptionMessageFactory <TInstance, TException, TRequest> messageFactory)
            where TInstance : class, SagaStateMachineInstance
            where TRequest : class
            where TResponse : class
            where TException : Exception
        {
            ScheduleTokenId.UseTokenId <RequestTimeoutExpired <TRequest> >(x => x.RequestId);
            var activity = new FaultedRequestActivity <TInstance, TException, TRequest, TResponse>(request, messageFactory);

            return(binder.Add(activity));
        }
        public static ExceptionActivityBinder <TInstance, TData, TException> Schedule <TInstance, TData, TException, TMessage>(
            this ExceptionActivityBinder <TInstance, TData, TException> source, Schedule <TInstance, TMessage> schedule,
            AsyncEventExceptionMessageFactory <TInstance, TData, TException, TMessage> messageFactory, Action <SendContext <TMessage> > contextCallback = null)
            where TInstance : class, SagaStateMachineInstance
            where TData : class
            where TException : Exception
            where TMessage : class
        {
            DateTime TimeProvider(ConsumeExceptionEventContext <TInstance, TData, TException> context)
            {
                return(DateTime.UtcNow + schedule.Delay);
            }

            return(source.Add(new FaultedScheduleActivity <TInstance, TData, TException, TMessage>(messageFactory, schedule, TimeProvider, contextCallback)));
        }
示例#10
0
 public FaultedPublishActivity(AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
                               Action <PublishContext <TMessage> > contextCallback)
     : this(contextCallback)
 {
     _asyncMessageFactory = messageFactory;
 }
 public FaultedSendActivity(AsyncEventExceptionMessageFactory <TInstance, TException, TMessage> messageFactory,
                            SendContextCallback <TInstance, TMessage> contextCallback)
     : this(contextCallback)
 {
     _asyncMessageFactory = messageFactory;
 }