CosmosDB中保留NServiceBus Outbox文件记录7天的意义

The significance of keeping NServiceBus Outbox document record for 7 days in CosmosDB

根据 NServiceBus Azure Cosmos DB 持久性 documentation,发件箱重复数据删除数据默认保留 7 天。但是,对于大容量事务数据库,这可以在一天内轻松添加数百个发件箱文档。我知道我们可以更改默认设置以减少发件箱 ttl。但是,在此之前,我想了解以下内容:

What is the significance of keeping the outbox document for 7 days in Cosmos DB?

这是默认值。选择它是为了安全起见,确保7天内没有重复处理,这是一个相当安全的时间范围。

What is the impact of reducing the ttl of the outbox document to, say, 4 days?

如果您将 TTL 减少到 4 天,并且有可能在该时间段之后收到重复邮件,则将处理而不是丢弃重复邮件。

Does it mean if a message has failed, it can be only recovered for the next 4 days?

发件箱功能与删除邮件无关。它用于对传入消息进行重复数据删除,以避免不必要的重新处理。

If yes, is there a way to clean up the outbox record for the transactions that are successful immediately?

您可以将 TTL 设置为一个非常低的值,但这样您就冒着 运行 重复重新处理的风险,因为它 不是 关于成功或不成功的传入消息处理,而是您无法控制的重复项。更不用说发件箱功能有助于在分派失败的情况下在传入消息重试时减少不必要的处理程序执行。