首页 > 解决方案 > 在 MSDI IServiceCollection.AddTransient 服务中访问 MassTransit ConsumeContext

问题描述

ConsumeContext添加临时服务时,我们需要访问我们的标头。我们之前一直在使用IHttpContextAccessor来获取普通 http 请求的标头,现在我们需要为我们的事件消费者做类似的事情。在使用 MassTransit 时,在设置我们的依赖项/服务时,我们将如何访问已消费事件的标头?

services.TryAddTransient<ISapService>(provider =>
{
    var httpContextAccessor = provider.GetService<IHttpContextAccessor>();    
    httpContextAccessor.HttpContext.Request.Headers.TryGetValue(
        "x-plant-id",
        out var plantHeader
    );

    return new SapService(plantHeader);
});

标签: .net-coredependency-injectionmasstransit

解决方案


我不确定它是否适用于瞬态服务,但 MassTransit 确实支持范围过滤器。它们在消费者范围内得到解决。


推荐阅读