【问题标题】:When does NServiceBus transaction end, when sending to a subscriber or when all subscribers have received their messages?NServiceBus 事务什么时候结束,什么时候发送给一个订阅者,或者什么时候所有订阅者都收到了他们的消息?
【发布时间】:2015-05-25 11:59:57
【问题描述】:

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

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

交易是否(默认)在以下时间结束:

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

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

【问题讨论】:

    标签: c# transactions nservicebus publish-subscribe


    【解决方案1】:

    当传入消息的所有消息处理程序已成功运行完成(或在失败的情况下回滚)时,它以提交结束。

    在您的场景中,这将是在事件发布并被底层传输接受之后。对于具有存储转发体系结构的 MSMQ,这意味着写入每个订阅者的传出队列。对于像 RabbitMQ 这样的代理传输,这意味着写入代理上的磁盘。 (默认情况下。您可以通过显式更改选项使这更加危险)

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多