如何解决使用Autofac扩展名时如何在MassTransit中注册IFilter <PublishContext <T >>
我正在使用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
作为第二个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。