/// <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>
        /// <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 EventActivityBinder <TInstance> Request <TInstance, TRequest, TResponse>(
            this EventActivityBinder <TInstance> binder, Request <TInstance, TRequest, TResponse> request,
            EventMessageFactory <TInstance, TRequest> messageFactory)
            where TInstance : class, SagaStateMachineInstance
            where TRequest : class
            where TResponse : class
        {
            var activity = new RequestActivity <TInstance, TRequest, TResponse>(request, messageFactory);

            return(binder.Add(activity));
        }
示例#2
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>
        /// <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 EventActivityBinder <TInstance> Request <TInstance, TRequest, TResponse>(this EventActivityBinder <TInstance> binder,
                                                                                               Request <TInstance, TRequest, TResponse> request, AsyncEventMessageFactory <TInstance, TRequest> messageFactory)
            where TInstance : class, SagaStateMachineInstance
            where TRequest : class
            where TResponse : class
        {
            ScheduleTokenId.UseTokenId <RequestTimeoutExpired <TRequest> >(x => x.RequestId);
            var activity = new RequestActivity <TInstance, TRequest, TResponse>(request, messageFactory);

            return(binder.Add(activity));
        }
示例#3
0
            public static EventActivityBinder <TInstance, TData> Request <TInstance, TData, TRequest, TResponse>(
                this EventActivityBinder <TInstance, TData> binder, Request <TRequest, TResponse> request,
                Func <ConsumeContext <TData>, TRequest> requestMessageFactory)
            // Action<BehaviorContext<TInstance, TData>> action)
                where TInstance : class
                where TRequest : class
                where TResponse : class where TData : class
            {
                var activity = new RequestActivity <TInstance, TData, TRequest, TResponse>(request, requestMessageFactory);

                return(binder.Add(activity));
            }