我想问Rebus HTTP网关如何确认消息传递,以便在OutboundService发送消息时,它如何知道可以提交或回滚事务。
直观的答案是HTTP响应承认它,但查看代码
https://github.com/rebus-org/Rebus/blob/5fef6b400feaf569e0d6517ad9ee3f6da2f31820/src/Rebus.HttpGateway/Outbound/OutboundService.cs#L139
在阅读回复后似乎没有采取任何行动。
提前感谢:)
它做了一个非常简单的"确认",方法是如果没有发生错误,则假设消息已安全传递到目标队列。
这意味着无处不在的至少一次交付保证也适用于网关,尽管两次接收同一消息的风险当然会大大增加。
如果每个消息只处理一次对你来说很重要,你需要让你的接收者幂等-但这通常是你在没有分布式事务的情况下进行消息传递时的规则,所以这与没有HTTP网关的情况没有什么不同。