nservicebus - 如何防止多次启动 NServiceBus 传奇?

标签 nservicebus saga

我想创建一个由消息“Event1”开始的传奇,但它会忽略收到具有相同应用 ID 的“重复”开始消息(这可能是由于两个或多个用户在短时间内点击了 UI 按钮) .文档似乎表明这种方法可行:

  • 佐贺声明 IAmStartedByMessages<Event1>
  • Saga 使用 ConfigureMapping<Event1>(s => s.SomeID, m => m.SomeID); 配置自身
  • Handle(Event1 evt) 在处理第一条消息时设置一个 bool 标志,如果该标志已经设置,则退出处理程序。

  • 这会起作用吗?如果订阅者是多线程的,我会遇到竞争条件吗?如果是这样,我怎样才能实现所需的行为?

    谢谢!

    最佳答案

    当同时处理两个 Event1 消息时会发生竞争条件。防止创建两个 saga 实例的方法是在 SomeID 列上设置唯一约束。

    关于nservicebus - 如何防止多次启动 NServiceBus 传奇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431307/

    相关文章:

    domain-driven-design - EventSourced Saga实现

    c# - 由 Bus.Publish() 或订阅引起的 StackOverflowException?

    nservicebus - NServiceBus saga 到 saga 通信是一种反模式吗?

    azure - 使用 Azure Function Cosmos DB Changefeed 触发器使用 NServiceBus 发布消息

    mule - Windows Server 服务总线对比 NServicebus 对比 Mule ESB

    cqrs - CQRS/ES 系统中的 POST/PUT 响应 REST

    concurrency - NServiceBus 和并发性

    .net - NServiceBus 与 MassTransit

    nservicebus - 在 NServiceBus 中,当消息传入而没有匹配的传奇时,我该如何处理?

    nhibernate - 如何确保使用 MassTransit Saga 将项目添加到 NHibernate 持久化 IList 的良好性能