MassTransit:如何通过依赖注入在所有传出消息上设置自定义标头?

问题描述

我正在NetCore API中使用Masstransit。

在对API的每个传入请求中,我都在运行中间件,该中间件从传入的HTTP请求中获取一些用户信息,并在我称为CallContext的作用域对象上设置值。

我可以将此CallContext注入到我需要它的任何地方,以找出是谁/什么在拨打当前电话并执行适当的操作。

我的许多后端服务都通过Masstransit发布和/或发送消息。我希望所有传出邮件都具有自定义的“ CallContext”标头,以便使用者能够确定是谁或什么生成邮件

起初,我考虑过使用观察者来完成此操作,但是文档here不鼓励这样做:

不应使用观察者来修改拦截消息。至 拦截消息(以添加标题修改消息内容), 创建一个新的或使用现有的中间件组件。

关于与DI容器一起使用的自定义中间件here的文档尚不清楚。我可以找到的所有样本看起来都与此类似:

configurator.AddPipeSpecification(new ExceptionLoggerSpecification<T>());

使用new关键字开始了注册过程,因此无法从DI容器中解决我的CallContext依赖性。

2017年的

This问题和this GitHub问题正在尝试实现同一件事,但是最近(7.x)我找不到关于如何完成同一件事的任何明确指南。版本的Masstransit。

如何实现自定义中间件,以使中间件能够从.NET Core DI容器解析作用域对象实例?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)