c# - 如何注册 IFilter> 在 MassTransit 中使用 Autofac 扩展时
问题描述
我正在使用 Autofac 扩展,但找不到如何注册IFilter<PublishContext<T>>
具有依赖项的内容。文档建议使用UsePublishFilter(typeof(TFilter<>), context)
,但从哪里获得context
?
public static ContainerBuilder RegisterMassTransit(this ContainerBuilder builder, Func<IBusRegistrationContext, IBusControl> createBusFunc, Assembly consumerAssembly = null)
{
builder.AddMassTransit(cfg =>
{
if (consumerAssembly != null)
{
cfg.AddConsumers(consumerAssembly);
}
cfg.AddBus(createBusFunc);
});
return builder;
}
public void ConfigureContainer(ContainerBuilder builder)
{
builder
.RegisterMassTransit(CreateBus, Assembly.GetExecutingAssembly())
.RegisterTelemetryCollector();
}
private IBusControl CreateBus(IBusRegistrationContext registrationContext)
{
return Bus.Factory.CreateUsingAzureServiceBus(
cfg =>
{
cfg.Host(_serviceBusConnectionString);
cfg.UsePublishFilter(typeof(MyFilterWithDependencies<>), ????);
});
}
似乎有一个超载但从哪里得到ILifetimeScopeProvider
?
public static void UsePublishFilter(this IPublishPipelineConfigurator configurator, Type filterType, ILifetimeScopeProvider lifetimeScopeProvider)
解决方案
registrationContext
您应该作为第二个参数传递。
推荐阅读
- c - 什么是通过套接字发送请求的良好指标?
- python - VSCode 中的 TensorFlow 导入失败
- c++ - 为什么我的 unordered_map 越来越大
- c# - IAsyncActionFilter 返回空白页
- javascript - Facebook Instant Games 卡在 0% 加载
- aspnetboilerplate - ABP 中 NRules 的属性注入
- java - Android java:如何正确将排序数据发送到listView?
- c - PTRACE_PEEKTEXT 返回值和不可打印字符
- mysql - 如屏幕截图中所述,我想在 SQL 中创建一个数据透视表
- php - 两个时间变量,判断第二次是否在第二天