有没有办法从 RabbitMQ 获取消息标头(与通过 MassTransit 设置的标头不同)?
我的用例是,我正在尝试读取 RabbitMQ 添加的 timestamp,
timestamp_in_ms
(之前由 RabbitMQ 插件生成,现在通过配置原生)。timestamp
不同(带有代理的服务器本地时间)。
您可以使用以下方法从消费者的
Consume
方法中访问任何传输标头(包括 RabbitMQ):
if (context.ReceiveContext.TransportHeaders.TryGetHeader("timestamp_in_ms", out object timestampHeader))
{
if(timestampHeader is AmqpTimestamp ts)
{
var dateTime = DateTimeConstants.Epoch + TimeSpan.FromMilliseconds(ts.UnixTime);
}
}