【发布时间】:2021-12-05 19:40:40
【问题描述】:
美好的一天
我正在以这种方式注册公共交通消费者:
var provider = services.BuildServiceProvider();
cfg.ReceiveEndpoint(RabbitMqOptions.StatusChangeQueueName, e =>
{
e.Consumer(() => new ConsumerProcessingStatusChange(provider));
});
并希望我的消费者发布到另一个交易所 有没有办法在消费者构造函数中从服务提供者那里获取 IBus? 或者我应该传递其他参数(哪个?)
public class ConsumerProcessingStatusChange : IConsumer<***>
{
private readonly IBus _bus;
private readonly IMapper _mapper;
public ConsumerProcessingStatusChange(IServiceProvider provider)
{
_bus = provider.GetService<IBus>();
_mapper = new MapperConfiguration(cfg => cfg.AddProfile<MappingProfile>()).CreateMapper();
}
public async Task Consume(ConsumeContext<***> context)
{
await _bus.Publish(_mapper.Map<***>(context.Message));
}
在这里创建映射器是正确的方法还是也可以传递?
【问题讨论】:
标签: c# masstransit consumer