/// <summary> /// Ends the pipeline by executing the provided endpoint. Defaults to <see cref="BatchHandlerPipelineEndpoint{T}" /> /// </summary> public static void Run <T>(this IBatchPipelineBuilder <T> builder, Func <IReadOnlyCollection <Message <T> >, Task> action) { builder.Run(() => { return((messages, cancellationToken, messageContext) => action(messages)); }); }
/// <summary> /// Adds a middleware step into the pipeline /// </summary> public static IBatchPipelineBuilder <T> Use <T>(this IBatchPipelineBuilder <T> builder, Func <IReadOnlyCollection <Message <T> >, Func <Task>, Task> middleware) { return(builder.Use(next => { return (messages, cancellationToken, messageContext) => { return middleware(messages, () => next(messages, cancellationToken, messageContext)); }; })); }
public BatchPipelineEndpoint(IServiceScopeFactory serviceScopeFactory, IBatchPipelineBuilder <T> batchPipelineBuilder, IOptions <PipelineOptions <T> > options) : base(options.Value.BatchSize, options.Value.BatchTimeout) { _serviceScopeFactory = serviceScopeFactory; _batchPipelineBuilder = batchPipelineBuilder; }
/// <summary> /// Adds the MediatR pipeline endpoint to the end of the pipeline /// </summary> public static void RunMediatR <T>(this IBatchPipelineBuilder <T> pipelineBuilder) { pipelineBuilder.Services.TryAddScoped <MediatRBatchPipelineEndpoint <T> >(); pipelineBuilder.Run <MediatRBatchPipelineEndpoint <T> >(); }