带 IoC 的轨道交通过滤器 injection/Database
Masstransit Filter with IoC injection/Database
我必须在将传入消息传递给我的消费者之前对其进行验证。
为此,我需要从数据库中请求一些数据。
按照教程,我创建了扩展方法以将我的规范 + 过滤器应用于消费者管道。像这样:
public static void UseArticlesImportValidation(this IConsumePipeConfigurator configurator){}
public class ArticlesImportValidationSpecification : IPipeSpecification<ConsumeContext<ArticlesImportNotification>>
和过滤器
public class ArticlesImportValidationFilter : IFilter<ConsumeContext<ArticlesImportNotification>>
一切看起来都不错,但我想在我的 Filter 中注入一些业务服务以重用一些功能 + DAL 服务。这对我的消费者使用 Autofac 扩展方法 builder.RegisterConsumers(Assembly.GetExecutingAssembly());
.
完全没问题
我是否应该为此使用中间件?有什么建议吗?
您需要在您的规范中包含构建的容器(当您调用 AddPipeSpecification
然后在规范中作为参数很容易传递:
public void Apply(IPipeBuilder<T> builder)
{
builder.AddFilter(new ArticlesImportValidationFilter(container.Resolve<IDataAccessSomethingUseful>()));
}
但我会在消费者中进行验证,或者,如果您想将它们分开,让一个消费者进行验证并发送下一条消息以完成实际工作。
我必须在将传入消息传递给我的消费者之前对其进行验证。 为此,我需要从数据库中请求一些数据。
按照教程,我创建了扩展方法以将我的规范 + 过滤器应用于消费者管道。像这样:
public static void UseArticlesImportValidation(this IConsumePipeConfigurator configurator){}
public class ArticlesImportValidationSpecification : IPipeSpecification<ConsumeContext<ArticlesImportNotification>>
和过滤器
public class ArticlesImportValidationFilter : IFilter<ConsumeContext<ArticlesImportNotification>>
一切看起来都不错,但我想在我的 Filter 中注入一些业务服务以重用一些功能 + DAL 服务。这对我的消费者使用 Autofac 扩展方法 builder.RegisterConsumers(Assembly.GetExecutingAssembly());
.
我是否应该为此使用中间件?有什么建议吗?
您需要在您的规范中包含构建的容器(当您调用 AddPipeSpecification
然后在规范中作为参数很容易传递:
public void Apply(IPipeBuilder<T> builder)
{
builder.AddFilter(new ArticlesImportValidationFilter(container.Resolve<IDataAccessSomethingUseful>()));
}
但我会在消费者中进行验证,或者,如果您想将它们分开,让一个消费者进行验证并发送下一条消息以完成实际工作。