将上下文添加到DI CreateScope



在控制台应用程序中,我使用mastransit处理来自rabbitMQ队列的消息。每条消息都涉及一个特定的客户,并包含一个customerId(这可能在标头或消息中,tbd(。我使用的是标准的Microsoft依赖项注入,我有几个服务希望针对这个客户。

我可以在masstransit使用者中使用IServiceProvider.CreateScope。但我似乎无法确定设置特定";值";到范围。提供的每个作用域服务都可以用来确定为其定义作用域的客户。作用域服务可以用来确定";上下文";

我的感觉是,我希望定义一些类似HttpContext的东西(这在控制台应用程序中是不可用的(。

我是否必须通过在所有其他(作用域(服务都依赖的作用域服务上设置属性来手动执行此操作?这对我来说不是很线程安全(如果在我可以设置客户属性之前在一个范围中实例化了一个服务怎么办?(。

我知道这是一个有点开放的问题,但也许有人仍然可以提供答案?

我会提供代码,但这更多的是一个架构问题和MSDI的内部工作。

MassTransit为每个使用者创建一个范围,因此创建另一个范围是个坏主意。容器将通过使用者的构造函数自动解析任何作用域的依赖项。

最新更新