如何从 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。
我正在尝试复制 headers(基本上是 TenantId),当使用 Publish/Send 消息时,就像 MassTransit 使用 Correlation/Conversation ID 一样。
有关于 SO 如何修改发布管道的主题
有一个名为 TransferConsumeContextHeaders
的方法,它完全满足我的需要,但我需要以某种方式访问 ConsumeContext
,这在 ConfigurePublish
方法中不可用。
提前致谢。
UPD: 设法像下面的代码一样实现了这一点,但是我不确定这是否是个好主意。
var consumeContext = context.GetPayload<ConsumeContext>();
context.TransferConsumeContextHeaders(consumeContext);
Here's 完整示例。
根据评论和一些疯狂的猜测,这里是如何从 Publish/Send 访问 ConsumeContext 的方式:context.TryGetPayload(out ConsumeContext consumeContext)
.
然后就可以对传入数据做任何想做的事情,比如以通用方式将一些重要数据复制到 Publish/Send。