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
相关产品推荐
相关产品推荐

