繁体   English   中英

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

[英]How to prevent a NServiceBus saga from being started multiple times?

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

  • Saga声明IAmStartedByMessages<Event1>
  • Saga使用ConfigureMapping<Event1>(s => s.SomeID, m => m.SomeID);配置自身ConfigureMapping<Event1>(s => s.SomeID, m => m.SomeID);
  • Handle(Event1 evt)在处理第一条消息时设置一个布尔标志,如果已经设置了标志,则不在处理程序之外。

这会有用吗? 如果订阅者是多线程的,我会遇到竞争条件吗? 如果是这样,我怎样才能达到预期的行为?

谢谢!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM