You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MassTransit Azure Service Bus隔离模式下无法获取ReceiveContext的DeliveryCount属性

获取MassTransit ReceiveContext中的DeliveryCount
  • DeliveryCount是消息传输层(如RabbitMQ、Azure Service Bus)的原生属性,MassTransit通用ReceiveContext并不直接暴露该属性,需通过对应传输的特定上下文获取:

以RabbitMQ为例:

通过GetPayload<T>方法获取RabbitMQ专属接收上下文,读取原生DeliveryCount:

var rabbitMqReceiveContext = context.GetPayload<RabbitMqReceiveContext>();
int deliveryCount = rabbitMqReceiveContext.DeliveryCount;

以Azure Service Bus为例:

同理获取Azure Service Bus专属上下文:

var asbReceiveContext = context.GetPayload<AzureServiceBusReceiveContext>();
int deliveryCount = asbReceiveContext.DeliveryCount;
  • 关于GetRetryAttempt()、GetRetryCount()、GetRedeliveryCount()返回0的原因:
    这些方法仅统计**MassTransit内置重试中间件(如UseRetry配置的重试)**的次数,不包含消息队列原生的投递重发次数。如果你的消息重投是通过队列自身死信重投机制(如RabbitMQ的DLX+DLQ)触发的,这类方法不会统计该次数。

  • 关于MT-Fault-RetryCount头为null的原因:
    该头仅在MassTransit内置重试中间件触发重试并生成Fault事件时才会添加,队列层面的重投不会生成此头信息。

内容的提问来源于stack exchange,提问作者David H Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:37:03