public override Task InvokeAsync(IPipeContext context, CancellationToken token) { var requestType = context.GetRequestMessageType(); var responseType = context.GetResponseMessageType(); if (requestType == null) { throw new ArgumentNullException(nameof(requestType)); } if (responseType == null) { throw new ArgumentNullException(nameof(responseType)); } var defaultCfg = _factory.Create(requestType, responseType); var builder = new RequestConfigurationBuilder(defaultCfg); var action = context.Get <Action <IRequestConfigurationBuilder> >(PipeKey.ConfigurationAction); action?.Invoke(builder); var requestConfig = builder.Config; context.Properties.TryAdd(RequestKey.Configuration, requestConfig); context.Properties.TryAdd(PipeKey.PublisherConfiguration, requestConfig.Request); context.Properties.TryAdd(PipeKey.ConsumerConfiguration, requestConfig.Response); context.Properties.TryAdd(PipeKey.ConsumeConfiguration, requestConfig.Response.Consume); return(Next.InvokeAsync(context, token)); }