普通消费者能否在重试 MassTransit 中的消息之前延长超时时间?

Can a regular consumer extended the timeout before retrying the message in MassTransit?

目前,我遇到的情况是某个事件需要更新数据库中一定数量的记录。通常,这不会超过几秒钟,但在某些情况下可能会超过 1 分钟。在这种情况下,消费者在 30 秒后获取相同的消息并重试。

我想知道是否可以在不使用 JobConsumers 的情况下增加等待时间,最多等待 5 分钟。

您是否在接收端点上配置 LockTimeout 30 秒? MassTransit 默认为 5 分钟,但如果队列已经配置了较低的锁定超时,Azure 服务总线将只等待该时间段,然后再重新传递消息。如果队列已存在,您需要使用 Azure 门户更新队列属性,或删除队列以便 MassTransit 重新创建它(任何消息都将丢失)。

您也可以将MaxDeliveryCount设置为1,Azure会在一次尝试后将消息移动到死信队列。不过第一种方法更好。