c# - MassTransit 使用元数据创建请求

标签 c# .net-core masstransit clean-architecture

我在我的项目中使用 MassTransit 包(整洁的架构)。

在 API 层中,我编写自定义授权过滤器,并在 HttpContext 中存在我的 CurrentUserInfo 数据。

然后我需要 IConsumer 存在的应用程序层内的 UserInfo,如下面的代码。

现在哪种方式更好:

  • 将元数据添加到我的请求客户端中?
  • 声明通用类并将其注入(inject)到已实现的 IConsumer 类中。
public class OptionCreateConsumer : IConsumer<OptionCreateRequest>
{
    private readonly IMapper _mapper;
    private readonly IUnitOfWork _unitOfWork;

    public OptionCreateConsumer(IMapper mapper, IUnitOfWork unitOfWork)
    {
        _mapper = mapper;
        _unitOfWork = unitOfWork;
    }
}

最佳答案

scoped filter示例中,您可以看到如何使用 Send/Publish 和 Consume 过滤器捕获 Token 对象并将其从请求客户端传递给消费者。

TokenActionFilteradded这样它也被限定了范围,将传入的数据拉入 Token (在您的情况下,这将是 UserInfo 对象。

filters为 MassTransit 配置的用于将该数据添加到 header ,以便下游消费者能够使用该 header 来初始化 token (或您的场景的 UserInfo)。

关于c# - MassTransit 使用元数据创建请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72270837/

相关文章:

c# - 来自单个 DotNet Core 项目配置文件的多个二进制文件

c# - 如何覆盖 MassTransit 默认交换和队列拓扑约定?

docker - Azure 服务总线 - 当应用程序位于 Docker 容器中时出现 MessageLockLostException,否则工作正常

c# - 如何扩展 C# 内置类型,如 String?

.net-core - MassTransit 故障处理配置

c# - VS2010 c# 查找谁在调用我的索引器

c# - 在 IIS Express 停止后停止 npm 任务/脚本

c# - MassTransit/RabbitMQ - 将拒绝的消息移至死信并重新投递

c# - 本地化 asp.net 下拉列表

c# - Socket.Bind 和 Connect 使用本地地址