如何从 MassTransit 中的 ConsumeContext 复制 headers 到 PublishContext/SendContext

How to copy headers to PublishContext/SendContext from ConsumeContext in MassTransit

我正在尝试复制 headers(基本上是 TenantId),当使用 Publish/Send 消息时,就像 MassTransit 使用 Correlation/Conversation ID 一样。

有关于 SO 如何修改发布管道的主题 , [2],但所有主题都添加了一些硬编码值。但是我需要将数据从 Consume 传输到 Publish/Send 管道。

有一个名为 TransferConsumeContextHeaders 的方法,它完全满足我的需要,但我需要以某种方式访问​​ ConsumeContext,这在 ConfigurePublish 方法中不可用。

提前致谢。

UPD: 设法像下面的代码一样实现了这一点,但是我不确定这是否是个好主意。

var consumeContext = context.GetPayload<ConsumeContext>();
context.TransferConsumeContextHeaders(consumeContext);

Here's 完整示例。

根据评论和一些疯狂的猜测,这里是如何从 Publish/Send 访问 ConsumeContext 的方式:context.TryGetPayload(out ConsumeContext consumeContext).

然后就可以对传入数据做任何想做的事情,比如以通用方式将一些重要数据复制到 Publish/Send。