如何将 MessageData 存储库配置为 MassTransit 中的服务?
How to configure a MessageData repository as a service in MassTransit?
我想将 IMessageDataRepository 注册为单独的服务,并将该服务与 MassTransit 配置一起使用。实现这一目标的一种方法是求助于可怕的服务定位器模式:
public void ConfigureServices(IServiceCollection services)
{
...
using var serviceProvider = services.BuildServiceProvider();
var repository = serviceProvider.GetRequiredService<IMessageDataRepository>();
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseMessageData(repository);
});
});
services.AddMassTransitHostedService();
...
}
有没有更好的方法?
配置总线时,通过UsingRabbitMq
,context参数是服务提供者:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseMessageData(context.GetRequiredService<IMessageDataRepository>());
});
});
services.AddMassTransitHostedService();
...
}
我想将 IMessageDataRepository 注册为单独的服务,并将该服务与 MassTransit 配置一起使用。实现这一目标的一种方法是求助于可怕的服务定位器模式:
public void ConfigureServices(IServiceCollection services)
{
...
using var serviceProvider = services.BuildServiceProvider();
var repository = serviceProvider.GetRequiredService<IMessageDataRepository>();
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseMessageData(repository);
});
});
services.AddMassTransitHostedService();
...
}
有没有更好的方法?
配置总线时,通过UsingRabbitMq
,context参数是服务提供者:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, cfg) =>
{
cfg.UseMessageData(context.GetRequiredService<IMessageDataRepository>());
});
});
services.AddMassTransitHostedService();
...
}