我想知道在特定情况下NServiceBus事务到底何时结束。场景如下:
在队列上收到消息。
处理程序读取消息并从数据库中加载某些内容。
处理程序将事件发布给3个订阅者。
事务(默认情况下)在以下情况下是否结束?
答:该活动已发布?
B:或者该事件已被所有3个订阅者发布并接收?
请注意,订户不是系统的一部分,不一定使用NServiceBus甚至.NET。
最佳答案
当传入消息的所有消息处理程序都已成功运行成功(或在失败的情况下回滚)时,它以提交结束。
在您的情况下,事件在基础传输被发布并接受之后是正确的。对于具有其存储转发架构的MSMQ,这意味着写入每个订户的传出队列。对于像RabbitMQ这样的代理传输,这意味着将数据写入代理上的磁盘。 (默认情况下。您可以通过显式更改选项来使其更加危险)
关于c# - NServiceBus事务何时结束,何时发送给订阅者或所有订阅者都已收到其消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30437883/