Mass Transit - RabbitMQ 超时后消息是否仍在传递

Mass Transit - Are messages still delivered after timeout with RabbitMQ

这可能是一个非常愚蠢的问题,但我未能在网上找到明确的答案。我正在使用 Masstransit Request/Response 模式和 RabbitMQ 作为我的消息代理。

我有一个请求,要将用户添加到数据库,并在一个单独的服务中添加一个消费者 运行,该服务使用该请求并发送响应。

请求超时十秒。我的问题是:如果该请求在消费者能够使用它之前超时,请求是否被删除,或者它最终会被消费者使用并且请求客户端只是超时并继续前进?

请求客户端用于请求,默认情况下有 30 秒的超时(您表示要更改为 10 秒)。此设置适用于请求客户端超时(停止等待响应的时间点)和已发送消息的 time-to-live。

如果您想延长消息的生存时间,您可以在发送请求时更改该值:

await client.GetResponse<T>(request, x =>
    x.Execute(context => context.TimeToLive = TimeSpan.FromDays(10)));

TL;DR - 是的,请求消息将在 10 秒后过期并由消息代理自动从队列中删除。