NServiceBus交易何时结束,何时发送给订户或所有订户都收到了他们的消息?

wil*_*lem 2 c# transactions nservicebus publish-subscribe

我想知道NServiceBus事务何时在特定场景中结束.方案如下:

  1. 消息在队列中收到.
  2. 处理程序读取消息并从数据库加载某些内容.
  3. Handler向3位订阅者发布了一个活动.

事务(默认情况下)在以下时间结束:

  • 答:活动已经发布了?
  • B:或者当所有3个订阅者发布并收到活动时?

请注意,订户不是系统的一部分,不一定使用NServiceBus,甚至不是.NET.

jan*_*esk 6

当传入消息的所有消息处理程序已成功运行(或在发生故障时回滚)时,它以提交结束.

在您的方案中,即在事件发布并由基础传输接受之后.对于MSMQ,其存储转发架构意味着写入每个订户的传出队列.对于像RabbitMQ这样的代理传输,它意味着写在代理上的磁盘上.(默认情况下.您可以通过显式更改选项使其更加危险)