/// <summary> /// Creates the <see cref="IRequestMediator{TRequest, TResponse}"/> instance. /// </summary> /// <returns>The <see cref="IRequestMediator{TRequest, TResponse}"/> instance.</returns> public IRequestMediator <TRequest, TResponse> CreateMqMediator() { if (_cached == null) { int sendSize = 0; SortedList <ServicingOrder, List <IRequestHandler <TRequest, TResponse> > > executionSendSequence = new SortedList <ServicingOrder, List <IRequestHandler <TRequest, TResponse> > >(_handlers.Count()); foreach (var item in _handlers) { sendSize++; if (executionSendSequence.ContainsKey(item.OrderInTheGroup)) { executionSendSequence[item.OrderInTheGroup].Add(item); } else { executionSendSequence[item.OrderInTheGroup] = new List <IRequestHandler <TRequest, TResponse> >() { item }; } } _cached = new MqSendMediatorProvider(executionSendSequence, sendSize); } return(_cached); }
/// <summary> /// Initialize instance with specifics configuration. /// </summary> /// <param name="factory">The mediator factory.</param> public RequestMediatorManager(IRequestMediatorFactory <TRequest, TResponse> factory) { _mediator = factory.CreateMqMediator(); }