我想知道交易发件箱如何工作以及MT如何保证数据库交易和消息发送操作的一致性。
在aspnetcore MVC示例中,如果成功提交数据库事务,但是由于某种原因消息发送失败,则MT是否会重试发送消息?
我看不到有关数据库存储的任何配置,我正在考虑如何保证这种可靠性
答案 0 :(得分:1)
如文档中所述,TransactionOutbox功能可确保仅在从使用者上下文发送或发布的所有消息实际发送到消息总线时才提交事务。
如果传输未确认消息,MassTransit 始终将重试发送消息。无论如何,它不是发件箱的一部分。
如果传输无法发送或发布您的消息,则不会进行提交,因此事务将回滚。