/// <summary> /// Send requests to the configured service endpoint, and setup the state machine to accept the responses. /// </summary> /// <typeparam name="TInstance">The state instance type</typeparam> /// <typeparam name="TData">The event data 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, TData> MultiRequest <TInstance, TData, TState, TRequest, TResponse>( this EventActivityBinder <TInstance, TData> binder, MultiRequest <TInstance, TState, TRequest, TResponse> request, EventMultiMessageFactory <TInstance, TData, TRequest> messageFactory) where TInstance : class, SagaStateMachineInstance where TData : class where TRequest : class where TResponse : class { ScheduleTokenId.UseTokenId <RequestTimeoutExpired <TRequest> >(x => x.RequestId); var activity = new MultiRequestActivity <TInstance, TData, TState, TRequest, TResponse>(request, messageFactory); return(binder.Add(activity)); }
/// <summary> /// Initializes a new instance. /// </summary> /// <param name="request"></param> /// <param name="serviceAddressProvider"></param> /// <param name="messageFactory"></param> public MultiRequestActivity(MultiRequest <TInstance, TState, TRequest, TResponse> request, ServiceAddressProvider <TInstance> serviceAddressProvider, EventMultiMessageFactory <TInstance, TRequest> messageFactory) : base(request) { this.messageFactory = messageFactory; serviceAddressProvider = context => serviceAddressProvider(context) ?? request.Settings.ServiceAddress; }