Nservicebus N服务总线系列-至少一次交付

Nservicebus N服务总线系列-至少一次交付,nservicebus,Nservicebus,将NServiceBus与NHibernate saga persister一起使用,当一条消息可能被多次接收时,如何避免重复的saga 以下是我迄今为止想到的一些解决方案: 永远不要调用MarkAsComplete(),这样重复数据消除就可以按照通常的方式由saga本身处理了 实现我自己的saga持久器,它存储已完成saga的相关id,因此重复/附加消息被忽略 问题是什么会导致消息被多次接收-是由于重试同一消息(如在DB中出现死锁的情况下)?这些重试(导致同一消息被“处理”多次)已经由NSer

将NServiceBus与NHibernate saga persister一起使用,当一条消息可能被多次接收时,如何避免重复的saga

以下是我迄今为止想到的一些解决方案:

  • 永远不要调用MarkAsComplete(),这样重复数据消除就可以按照通常的方式由saga本身处理了

  • 实现我自己的saga持久器,它存储已完成saga的相关id,因此重复/附加消息被忽略


  • 问题是什么会导致消息被多次接收-是由于重试同一消息(如在DB中出现死锁的情况下)?这些重试(导致同一消息被“处理”多次)已经由NServiceBus的事务性质处理


    如果这种情况是由于某个其他端点多次发送消息造成的,那么建议您看看在发送端可以做些什么来防止这种情况发生。如果这是不可能的,那么是的,一个从未完成的传奇可以作为你的过滤器。

    谢谢你的参与。我能够防止邮件在发送端被发送多次。很高兴知道解决方案1是一个可行的选择。